/*! Polyv player built @2024-1-22 14:53:22 */
var jsdom = require("jsdom");
var {JSDOM} = jsdom;
const dom = new JSDOM("<!DOCUMENT html><p>Test</p>");
window = dom.window;
navigator = window.navigator;
!function (e, t) {
    "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.PolyvWasmPlayer = t() : e.PolyvWasmPlayer = t()
}(window, (f = function () {
        return function (e) {
            var t = {};

            function n(r) {
                if (t[r])
                    return t[r].exports;
                var i = t[r] = {
                    i: r,
                    l: !1,
                    exports: {}
                };
                return e[r].call(i.exports, i, i.exports, n),
                    i.l = !0,
                    i.exports
            }

            return n.m = e,
                n.c = t,
                n.d = function (e, t, r) {
                    n.o(e, t) || Object.defineProperty(e, t, {
                        enumerable: !0,
                        get: r
                    })
                }
                ,
                n.r = function (e) {
                    "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
                        value: "Module"
                    }),
                        Object.defineProperty(e, "__esModule", {
                            value: !0
                        })
                }
                ,
                n.t = function (e, t) {
                    if (1 & t && (e = n(e)),
                    8 & t)
                        return e;
                    if (4 & t && "object" == typeof e && e && e.__esModule)
                        return e;
                    var r = Object.create(null);
                    if (n.r(r),
                        Object.defineProperty(r, "default", {
                            enumerable: !0,
                            value: e
                        }),
                    2 & t && "string" != typeof e)
                        for (var i in e)
                            n.d(r, i, function (t) {
                                return e[t]
                            }
                                .bind(null, i));
                    return r
                }
                ,
                n.n = function (e) {
                    var t = e && e.__esModule ? function () {
                                return e.default
                            }
                            : function () {
                                return e
                            }
                    ;
                    return n.d(t, "a", t),
                        t
                }
                ,
                n.o = function (e, t) {
                    return Object.prototype.hasOwnProperty.call(e, t)
                }
                ,
                n.p = "/dist",
                n(n.s = 166)
        }([function (e, t) {
            e.exports = function (e, t, n) {
                return t in e ? Object.defineProperty(e, t, {
                    value: n,
                    enumerable: !0,
                    configurable: !0,
                    writable: !0
                }) : e[t] = n,
                    e
            }
                ,
                e.exports.default = e.exports,
                e.exports.__esModule = !0
        }
            , function (e, t) {
                e.exports = function (e) {
                    if (void 0 === e)
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                    return e
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t) {
                e.exports = function (e, t) {
                    if (!(e instanceof t))
                        throw new TypeError("Cannot call a class as a function")
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t) {
                function n(t) {
                    return e.exports = n = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
                        return e.__proto__ || Object.getPrototypeOf(e)
                    }
                        ,
                        e.exports.default = e.exports,
                        e.exports.__esModule = !0,
                        n(t)
                }

                e.exports = n,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t) {
                function n(e, t) {
                    for (var n = 0; n < t.length; n++) {
                        var r = t[n];
                        r.enumerable = r.enumerable || !1,
                            r.configurable = !0,
                        "value" in r && (r.writable = !0),
                            Object.defineProperty(e, r.key, r)
                    }
                }

                e.exports = function (e, t, r) {
                    return t && n(e.prototype, t),
                    r && n(e, r),
                        e
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t, n) {
                var r = n(48);
                e.exports = function (e, t) {
                    if ("function" != typeof t && null !== t)
                        throw new TypeError("Super expression must either be null or a function");
                    e.prototype = Object.create(t && t.prototype, {
                        constructor: {
                            value: e,
                            writable: !0,
                            configurable: !0
                        }
                    }),
                    t && r(e, t)
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t, n) {
                var r = n(12).default
                    , i = n(1);
                e.exports = function (e, t) {
                    return !t || "object" !== r(t) && "function" != typeof t ? i(e) : t
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , , function (e, t) {
                e.exports = function (e, t) {
                    return t || (t = e.slice(0)),
                        Object.freeze(Object.defineProperties(e, {
                            raw: {
                                value: Object.freeze(t)
                            }
                        }))
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t, n) {
                "use strict";
                n.d(t, "c", (function () {
                        return r
                    }
                )),
                    n.d(t, "b", (function () {
                            return i
                        }
                    )),
                    n.d(t, "a", (function () {
                            return a
                        }
                    )),
                    n.d(t, "d", (function () {
                            return o
                        }
                    ));
                var r = {
                    projectName: "PolyvPlayer",
                    projectAbbreviation: "GP",
                    mode: "production",
                    basePath: "./",
                    get distPath() {
                        var e = "";
                        return ("development" == this.mode || "test" == this.mode) && (e = "/dist/"),
                            e
                    },
                    get libPath() {
                        return this.distPath + "lib/"
                    },
                    hideBarBoxTime: 300,
                    speedList: [{
                        name: "0.5X",
                        value: .5
                    }, {
                        name: "1.0X",
                        value: 1
                    }, {
                        name: "1.5X",
                        value: 1.5
                    }, {
                        name: "2.0X",
                        value: 2
                    }, {
                        name: "3.0X",
                        value: 3
                    }]
                }
                    , i = {
                    maxDuration: 30,
                    maxSize: 1024e6,
                    maxRetryCount: 3
                }
                    , a = 1 / 9e4
                    , o = {
                    READYBUFFERLENGTH: 1e3,
                    MAXBUFFERLENGTH: 5e3,
                    MAXCACHEFRAMES: 30
                }
            }
            , function (e, t) {
                e.exports = function (e, t, n) {
                    var r = t.get(e);
                    if (!r)
                        throw new TypeError("attempted to set private field on non-instance");
                    if (r.set)
                        r.set.call(e, n);
                    else {
                        if (!r.writable)
                            throw new TypeError("attempted to set read only private field");
                        r.value = n
                    }
                    return n
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t, n) {
                "use strict";
                var r = n(2)
                    , i = n.n(r)
                    , a = n(4)
                    , o = n.n(a)
                    , s = n(0)
                    , u = n.n(s)
                    , l = n(9)
                    , c = console || {};

                function h(e, t) {
                    if (c[e]) {
                        if (this.disabled || this.level < 0 || 0 === this.level && "info" === e)
                            return;
                        if ("production" === l.c.mode && ("error" !== e || "warn" !== e))
                            return;
                        if (1 === this.level && ["info"].includes(e))
                            return;
                        if (2 === this.level && ["log", "info"].includes(e))
                            return;
                        if (this.level > 2 && "error" !== e)
                            return;
                        for (var n = (new Date).toLocaleString(), r = arguments.length, i = new Array(r > 2 ? r - 2 : 0), a = 2; a < r; a++)
                            i[a - 2] = arguments[a];
                        var o = ["[32m".concat(t, "[39m")].concat(i, [n]);
                        "error" !== e && "warn" !== e || (o = [t].concat(i, [n])),
                        "function" == typeof c[e] && c[e].apply(c, o)
                    }
                }

                var f = function () {
                    function e(t) {
                        var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        i()(this, e),
                            u()(this, "prefix", l.c.projectName),
                            u()(this, "joiner", ">"),
                            u()(this, "left", "["),
                            u()(this, "right", "]"),
                            u()(this, "disabled", !1),
                            u()(this, "level", 0),
                            Object.assign(this, n),
                            "string" == typeof t ? this.file = t : t && t.constructor && (this.file = t.constructor.name)
                    }

                    return o()(e, [{
                        key: "setDisabled",
                        value: function (e) {
                            this.disabled = e
                        }
                    }, {
                        key: "setLevel",
                        value: function (e) {
                            this.level = e
                        }
                    }], [{
                        key: "get",
                        value: function (t, n) {
                            return new e(t, n)
                        }
                    }]),
                        e
                }();
                ["info", "log", "debug", "warn", "error"].forEach((function (e) {
                        f.prototype[e] = function (t, n) {
                            n = void 0 === n ? "" : this.joiner + n;
                            for (var r = this.left + t + n + this.right, i = this.left + this.prefix + " " + this.file + this.right + r, a = arguments.length, o = new Array(a > 2 ? a - 2 : 0), s = 2; s < a; s++)
                                o[s - 2] = arguments[s];
                            h.apply(this, [e, i].concat(o))
                        }
                    }
                )),
                    t.a = f
            }
            , function (e, t) {
                function n(t) {
                    return "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? (e.exports = n = function (e) {
                        return typeof e
                    }
                        ,
                        e.exports.default = e.exports,
                        e.exports.__esModule = !0) : (e.exports = n = function (e) {
                        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                    }
                        ,
                        e.exports.default = e.exports,
                        e.exports.__esModule = !0),
                        n(t)
                }

                e.exports = n,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t) {
                e.exports = function (e, t) {
                    var n = t.get(e);
                    if (!n)
                        throw new TypeError("attempted to get private field on non-instance");
                    return n.get ? n.get.call(e) : n.value
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , , , , , , , function (e, t, n) {
                e.exports = n(75)
            }
            , , , , , function (e, t, n) {
                "use strict";
                n.d(t, "a", (function () {
                        return f
                    }
                ));
                var r = n(2)
                    , i = n.n(r)
                    , a = n(4)
                    , o = n.n(a)
                    , s = n(0)
                    , u = n.n(s)
                    , l = n(9)
                    , c = {
                    eval: EvalError,
                    range: RangeError,
                    reference: ReferenceError,
                    syntax: SyntaxError,
                    type: TypeError,
                    uri: URIError,
                    default: Error
                }
                    , h = null
                    , f = (h || (h = new (function () {
                    function e() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "default"
                            , n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1001;
                        return i()(this, e),
                            u()(this, "type", ""),
                            u()(this, "errorName", "DefaultError"),
                            u()(this, "code", null),
                            u()(this, "message", ""),
                            u()(this, "stack", ""),
                            this.type = t,
                            this.code = n,
                            this.throws.bind(this)
                    }

                    return o()(e, [{
                        key: "throws",
                        value: function (e) {
                            for (var t = "", n = Error, r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), a = 1; a < r; a++)
                                i[a - 1] = arguments[a];
                            if (e instanceof Error) {
                                for (var o in c)
                                    if (e instanceof c[o]) {
                                        this.errorName = c[o].name,
                                            n = e.constructor;
                                        break
                                    }
                                this.stack = e.stack,
                                i && i.splice && (t = i[0],
                                    i.splice(0, 1))
                            } else
                                t = e.toString();
                            this.message = "[".concat(l.c.projectName, " ERROR:") + this.type + "-" + this.code + "]" + t;
                            try {
                                throw new n(this.message, "[args]:", i)
                            } catch (e) {
                                this.stack = this.stack || e.stack,
                                    console.error(e, "[message]:", t, "[args]:", i)
                            }
                        }
                    }]),
                        e
                }())),
                    h)
            }
            , , , function (e, t, n) {
                var r = n(48)
                    , i = n(89);

                function a(t, n, o) {
                    return i() ? (e.exports = a = Reflect.construct,
                        e.exports.default = e.exports,
                        e.exports.__esModule = !0) : (e.exports = a = function (e, t, n) {
                        var i = [null];
                        i.push.apply(i, t);
                        var a = new (Function.bind.apply(e, i));
                        return n && r(a, n.prototype),
                            a
                    }
                        ,
                        e.exports.default = e.exports,
                        e.exports.__esModule = !0),
                        a.apply(null, arguments)
                }

                e.exports = a,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t) {
                function n(e, t, n, r, i, a, o) {
                    try {
                        var s = e[a](o)
                            , u = s.value
                    } catch (e) {
                        return void n(e)
                    }
                    s.done ? t(u) : Promise.resolve(u).then(r, i)
                }

                e.exports = function (e) {
                    return function () {
                        var t = this
                            , r = arguments;
                        return new Promise((function (i, a) {
                                var o = e.apply(t, r);

                                function s(e) {
                                    n(o, i, a, s, u, "next", e)
                                }

                                function u(e) {
                                    n(o, i, a, s, u, "throw", e)
                                }

                                s(void 0)
                            }
                        ))
                    }
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , , , , , function (e, t, n) {
                var r = n(3)
                    , i = n(48)
                    , a = n(90)
                    , o = n(28);

                function s(t) {
                    var n = "function" == typeof Map ? new Map : void 0;
                    return e.exports = s = function (e) {
                        if (null === e || !a(e))
                            return e;
                        if ("function" != typeof e)
                            throw new TypeError("Super expression must either be null or a function");
                        if (void 0 !== n) {
                            if (n.has(e))
                                return n.get(e);
                            n.set(e, t)
                        }

                        function t() {
                            return o(e, arguments, r(this).constructor)
                        }

                        return t.prototype = Object.create(e.prototype, {
                            constructor: {
                                value: t,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        }),
                            i(t, e)
                    }
                        ,
                        e.exports.default = e.exports,
                        e.exports.__esModule = !0,
                        s(t)
                }

                e.exports = s,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , , , , , , , , , , function (e, t, n) {
                function r(e) {
                    var t = {};

                    function n(r) {
                        if (t[r])
                            return t[r].exports;
                        var i = t[r] = {
                            i: r,
                            l: !1,
                            exports: {}
                        };
                        return e[r].call(i.exports, i, i.exports, n),
                            i.l = !0,
                            i.exports
                    }

                    n.m = e,
                        n.c = t,
                        n.i = function (e) {
                            return e
                        }
                        ,
                        n.d = function (e, t, r) {
                            n.o(e, t) || Object.defineProperty(e, t, {
                                configurable: !1,
                                enumerable: !0,
                                get: r
                            })
                        }
                        ,
                        n.r = function (e) {
                            Object.defineProperty(e, "__esModule", {
                                value: !0
                            })
                        }
                        ,
                        n.n = function (e) {
                            var t = e && e.__esModule ? function () {
                                        return e.default
                                    }
                                    : function () {
                                        return e
                                    }
                            ;
                            return n.d(t, "a", t),
                                t
                        }
                        ,
                        n.o = function (e, t) {
                            return Object.prototype.hasOwnProperty.call(e, t)
                        }
                        ,
                        n.p = "/",
                        n.oe = function (e) {
                            throw console.error(e),
                                e
                        }
                    ;
                    var r = n(n.s = ENTRY_MODULE);
                    return r.default || r
                }

                function i(e) {
                    return (e + "").replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&")
                }

                function a(e, t, r) {
                    var a = {};
                    a[r] = [];
                    var o = t.toString()
                        , s = o.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);
                    if (!s)
                        return a;
                    for (var u, l = s[1], c = new RegExp("(\\\\n|\\W)" + i(l) + "\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)", "g"); u = c.exec(o);)
                        "dll-reference" !== u[3] && a[r].push(u[3]);
                    for (c = new RegExp("\\(" + i(l) + '\\("(dll-reference\\s([\\.|\\-|\\+|\\w|/|@]+))"\\)\\)\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)', "g"); u = c.exec(o);)
                        e[u[2]] || (a[r].push(u[1]),
                            e[u[2]] = n(u[1]).m),
                            a[u[2]] = a[u[2]] || [],
                            a[u[2]].push(u[4]);
                    for (var h, f = Object.keys(a), d = 0; d < f.length; d++)
                        for (var p = 0; p < a[f[d]].length; p++)
                            h = a[f[d]][p],
                            isNaN(1 * h) || (a[f[d]][p] = 1 * a[f[d]][p]);
                    return a
                }

                function o(e) {
                    return Object.keys(e).reduce((function (t, n) {
                            return t || e[n].length > 0
                        }
                    ), !1)
                }

                e.exports = function (e, t) {
                    t = t || {};
                    var i = {
                        main: n.m
                    }
                        , s = t.all ? {
                        main: Object.keys(i.main)
                    } : function (e, t) {
                        for (var n = {
                            main: [t]
                        }, r = {
                            main: []
                        }, i = {
                            main: {}
                        }; o(n);)
                            for (var s = Object.keys(n), u = 0; u < s.length; u++) {
                                var l = s[u]
                                    , c = n[l].pop();
                                if (i[l] = i[l] || {},
                                !i[l][c] && e[l][c]) {
                                    i[l][c] = !0,
                                        r[l] = r[l] || [],
                                        r[l].push(c);
                                    for (var h = a(e, e[l][c], l), f = Object.keys(h), d = 0; d < f.length; d++)
                                        n[f[d]] = n[f[d]] || [],
                                            n[f[d]] = n[f[d]].concat(h[f[d]])
                                }
                            }
                        return r
                    }(i, e)
                        , u = "";
                    Object.keys(s).filter((function (e) {
                            return "main" !== e
                        }
                    )).forEach((function (e) {
                            for (var t = 0; s[e][t];)
                                t++;
                            s[e].push(t),
                                i[e][t] = "(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",
                                u = u + "var " + e + " = (" + r.toString().replace("ENTRY_MODULE", JSON.stringify(t)) + ")({" + s[e].map((function (t) {
                                        return JSON.stringify(t) + ": " + i[e][t].toString()
                                    }
                                )).join(",") + "});\n"
                        }
                    )),
                        u = u + "new ((" + r.toString().replace("ENTRY_MODULE", JSON.stringify(e)) + ")({" + s.main.map((function (e) {
                                return JSON.stringify(e) + ": " + i.main[e].toString()
                            }
                        )).join(",") + "}))(self);";
                    var l = new window.Blob([u], {
                        type: "text/javascript"
                    });
                    if (t.bare)
                        return l;
                    var c = (window.URL || window.webkitURL || window.mozURL || window.msURL).createObjectURL(l)
                        , h = new window.Worker(c);
                    return h.objectURL = c,
                        h
                }
            }
            , function (e, t, n) {
                var r, i, a;
                i = [],
                void 0 === (a = "function" == typeof (r = function () {
                        var e = function () {
                        }
                            , t = {}
                            , n = {}
                            , r = {};

                        function i(e, t) {
                            if (e) {
                                var i = r[e];
                                if (n[e] = t,
                                    i)
                                    for (; i.length;)
                                        i[0](e, t),
                                            i.splice(0, 1)
                            }
                        }

                        function a(t, n) {
                            t.call && (t = {
                                success: t
                            }),
                                n.length ? (t.error || e)(n) : (t.success || e)(t)
                        }

                        function o(t, n, r, i) {
                            var a, s, u = document, l = r.async, c = (r.numRetries || 0) + 1, h = r.before || e,
                                f = t.replace(/[\?|#].*$/, ""), d = t.replace(/^(css|img)!/, "");
                            i = i || 0,
                                /(^css!|\.css$)/.test(f) ? ((s = u.createElement("link")).rel = "stylesheet",
                                    s.href = d,
                                (a = "hideFocus" in s) && s.relList && (a = 0,
                                    s.rel = "preload",
                                    s.as = "style")) : /(^img!|\.(png|gif|jpg|svg|webp)$)/.test(f) ? (s = u.createElement("img")).src = d : ((s = u.createElement("script")).src = t,
                                    s.async = void 0 === l || l),
                                s.onload = s.onerror = s.onbeforeload = function (e) {
                                    var u = e.type[0];
                                    if (a)
                                        try {
                                            s.sheet.cssText.length || (u = "e")
                                        } catch (e) {
                                            18 != e.code && (u = "e")
                                        }
                                    if ("e" == u) {
                                        if ((i += 1) < c)
                                            return o(t, n, r, i)
                                    } else if ("preload" == s.rel && "style" == s.as)
                                        return s.rel = "stylesheet";
                                    n(t, u, e.defaultPrevented)
                                }
                                ,
                            !1 !== h(t, s) && u.head.appendChild(s)
                        }

                        function s(e, n, r) {
                            var s, u;
                            if (n && n.trim && (s = n),
                                u = (s ? r : n) || {},
                                s) {
                                if (s in t)
                                    throw "LoadJS";
                                t[s] = !0
                            }

                            function l(t, n) {
                                !function (e, t, n) {
                                    var r, i, a = (e = e.push ? e : [e]).length, s = a, u = [];
                                    for (r = function (e, n, r) {
                                        if ("e" == n && u.push(e),
                                        "b" == n) {
                                            if (!r)
                                                return;
                                            u.push(e)
                                        }
                                        --a || t(u)
                                    }
                                             ,
                                             i = 0; i < s; i++)
                                        o(e[i], r, n)
                                }(e, (function (e) {
                                        a(u, e),
                                        t && a({
                                            success: t,
                                            error: n
                                        }, e),
                                            i(s, e)
                                    }
                                ), u)
                            }

                            if (u.returnPromise)
                                return new Promise(l);
                            l()
                        }

                        return s.ready = function (e, t) {
                            return function (e, t) {
                                e = e.push ? e : [e];
                                var i, a, o, s = [], u = e.length, l = u;
                                for (i = function (e, n) {
                                    n.length && s.push(e),
                                    --l || t(s)
                                }
                                    ; u--;)
                                    a = e[u],
                                        (o = n[a]) ? i(a, o) : (r[a] = r[a] || []).push(i)
                            }(e, (function (e) {
                                    a(t, e)
                                }
                            )),
                                s
                        }
                            ,
                            s.done = function (e) {
                                i(e, [])
                            }
                            ,
                            s.reset = function () {
                                t = {},
                                    n = {},
                                    r = {}
                            }
                            ,
                            s.isDefined = function (e) {
                                return e in t
                            }
                            ,
                            s
                    }
                ) ? r.apply(t, i) : r) || (e.exports = a)
            }
            , , , function (e, t) {
                function n(t, r) {
                    return e.exports = n = Object.setPrototypeOf || function (e, t) {
                        return e.__proto__ = t,
                            e
                    }
                        ,
                        e.exports.default = e.exports,
                        e.exports.__esModule = !0,
                        n(t, r)
                }

                e.exports = n,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t) {
                !function () {
                    "use strict";

                    function t(e, t) {
                        throw new Error("abstract")
                    }

                    t.prototype.drawFrame = function (e) {
                        throw new Error("abstract")
                    }
                        ,
                        t.prototype.clear = function () {
                            throw new Error("abstract")
                        }
                        ,
                        e.exports = t
                }()
            }
            , , , , , , , , , , , function (e, t) {
                var n = {
                    validateDimension: function (e) {
                        if (e <= 0 || e !== (0 | e))
                            throw "YUV plane dimensions must be a positive integer"
                    },
                    validateOffset: function (e) {
                        if (e < 0 || e !== (0 | e))
                            throw "YUV plane offsets must be a non-negative integer"
                    },
                    format: function (e) {
                        var t = e.width
                            , n = e.height
                            , r = e.chromaWidth || t
                            , i = e.chromaHeight || n
                            , a = e.cropLeft || 0
                            , o = e.cropTop || 0
                            , s = e.cropWidth || t - a
                            , u = e.cropHeight || n - o
                            , l = e.displayWidth || s
                            , c = e.displayHeight || u;
                        return this.validateDimension(t),
                            this.validateDimension(n),
                            this.validateDimension(r),
                            this.validateDimension(i),
                            this.validateOffset(a),
                            this.validateOffset(o),
                            this.validateDimension(s),
                            this.validateDimension(u),
                            this.validateDimension(l),
                            this.validateDimension(c),
                            {
                                width: t,
                                height: n,
                                chromaWidth: r,
                                chromaHeight: i,
                                cropLeft: a,
                                cropTop: o,
                                cropWidth: s,
                                cropHeight: u,
                                displayWidth: l,
                                displayHeight: c
                            }
                    },
                    allocPlane: function (e, t) {
                        return n.validateDimension(e),
                            n.validateDimension(t),
                            {
                                bytes: new Uint8Array(e * t),
                                stride: e
                            }
                    },
                    suitableStride: function (e) {
                        n.validateDimension(e);
                        var t = e % 4;
                        return 0 == t ? e : e + (4 - t)
                    },
                    allocPlane: function (e, t, n, r, i) {
                        var a, o;
                        if (this.validateDimension(e),
                            this.validateDimension(t),
                            i = i || 0,
                            r = r || this.suitableStride(e),
                            this.validateDimension(r),
                        r < e)
                            throw "Invalid input stride for YUV plane; must be larger than width";
                        if (a = r * t,
                            n) {
                            if (n.length - i < a)
                                throw "Invalid input buffer for YUV plane; must be large enough for stride times height";
                            o = n.slice(i, i + a)
                        } else
                            o = new Uint8Array(a),
                                r = r || this.suitableStride(e);
                        return {
                            bytes: o,
                            stride: r
                        }
                    },
                    lumaPlane: function (e, t, n, r) {
                        return this.allocPlane(e.width, e.height, t, n, r)
                    },
                    chromaPlane: function (e, t, n, r) {
                        return this.allocPlane(e.chromaWidth, e.chromaHeight, t, n, r)
                    },
                    frame: function (e, t, n, r) {
                        return {
                            format: e,
                            y: t = t || this.lumaPlane(e),
                            u: n = n || this.chromaPlane(e),
                            v: r = r || this.chromaPlane(e)
                        }
                    },
                    copyPlane: function (e) {
                        return {
                            bytes: e.bytes.slice(),
                            stride: e.stride
                        }
                    },
                    copyFrame: function (e) {
                        return {
                            format: e.format,
                            y: this.copyPlane(e.y),
                            u: this.copyPlane(e.u),
                            v: this.copyPlane(e.v)
                        }
                    },
                    transferables: function (e) {
                        return [e.y.bytes.buffer, e.u.bytes.buffer, e.v.bytes.buffer]
                    }
                };
                e.exports = n
            }
            , function (e, t, n) {
                var r = n(99)
                    , i = n(100)
                    , a = n(101)
                    , o = n(103);
                e.exports = function (e, t) {
                    return r(e) || i(e, t) || a(e, t) || o()
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , , , , , , , function (e, t) {
                var n = {
                    utf8: {
                        stringToBytes: function (e) {
                            return n.bin.stringToBytes(unescape(encodeURIComponent(e)))
                        },
                        bytesToString: function (e) {
                            return decodeURIComponent(escape(n.bin.bytesToString(e)))
                        }
                    },
                    bin: {
                        stringToBytes: function (e) {
                            for (var t = [], n = 0; n < e.length; n++)
                                t.push(255 & e.charCodeAt(n));
                            return t
                        },
                        bytesToString: function (e) {
                            for (var t = [], n = 0; n < e.length; n++)
                                t.push(String.fromCharCode(e[n]));
                            return t.join("")
                        }
                    }
                };
                e.exports = n
            }
            , , , , , function (e, t, n) {
                var r, i, a, o, s;
                r = n(91),
                    i = n(68).utf8,
                    a = n(92),
                    o = n(68).bin,
                    (s = function (e, t) {
                            e.constructor == String ? e = t && "binary" === t.encoding ? o.stringToBytes(e) : i.stringToBytes(e) : a(e) ? e = Array.prototype.slice.call(e, 0) : Array.isArray(e) || e.constructor === Uint8Array || (e = e.toString());
                            for (var n = r.bytesToWords(e), u = 8 * e.length, l = 1732584193, c = -271733879, h = -1732584194, f = 271733878, d = 0; d < n.length; d++)
                                n[d] = 16711935 & (n[d] << 8 | n[d] >>> 24) | 4278255360 & (n[d] << 24 | n[d] >>> 8);
                            n[u >>> 5] |= 128 << u % 32,
                                n[14 + (u + 64 >>> 9 << 4)] = u;
                            var p = s._ff
                                , y = s._gg
                                , v = s._hh
                                , g = s._ii;
                            for (d = 0; d < n.length; d += 16) {
                                var m = l
                                    , b = c
                                    , k = h
                                    , x = f;
                                l = p(l, c, h, f, n[d + 0], 7, -680876936),
                                    f = p(f, l, c, h, n[d + 1], 12, -389564586),
                                    h = p(h, f, l, c, n[d + 2], 17, 606105819),
                                    c = p(c, h, f, l, n[d + 3], 22, -1044525330),
                                    l = p(l, c, h, f, n[d + 4], 7, -176418897),
                                    f = p(f, l, c, h, n[d + 5], 12, 1200080426),
                                    h = p(h, f, l, c, n[d + 6], 17, -1473231341),
                                    c = p(c, h, f, l, n[d + 7], 22, -45705983),
                                    l = p(l, c, h, f, n[d + 8], 7, 1770035416),
                                    f = p(f, l, c, h, n[d + 9], 12, -1958414417),
                                    h = p(h, f, l, c, n[d + 10], 17, -42063),
                                    c = p(c, h, f, l, n[d + 11], 22, -1990404162),
                                    l = p(l, c, h, f, n[d + 12], 7, 1804603682),
                                    f = p(f, l, c, h, n[d + 13], 12, -40341101),
                                    h = p(h, f, l, c, n[d + 14], 17, -1502002290),
                                    l = y(l, c = p(c, h, f, l, n[d + 15], 22, 1236535329), h, f, n[d + 1], 5, -165796510),
                                    f = y(f, l, c, h, n[d + 6], 9, -1069501632),
                                    h = y(h, f, l, c, n[d + 11], 14, 643717713),
                                    c = y(c, h, f, l, n[d + 0], 20, -373897302),
                                    l = y(l, c, h, f, n[d + 5], 5, -701558691),
                                    f = y(f, l, c, h, n[d + 10], 9, 38016083),
                                    h = y(h, f, l, c, n[d + 15], 14, -660478335),
                                    c = y(c, h, f, l, n[d + 4], 20, -405537848),
                                    l = y(l, c, h, f, n[d + 9], 5, 568446438),
                                    f = y(f, l, c, h, n[d + 14], 9, -1019803690),
                                    h = y(h, f, l, c, n[d + 3], 14, -187363961),
                                    c = y(c, h, f, l, n[d + 8], 20, 1163531501),
                                    l = y(l, c, h, f, n[d + 13], 5, -1444681467),
                                    f = y(f, l, c, h, n[d + 2], 9, -51403784),
                                    h = y(h, f, l, c, n[d + 7], 14, 1735328473),
                                    l = v(l, c = y(c, h, f, l, n[d + 12], 20, -1926607734), h, f, n[d + 5], 4, -378558),
                                    f = v(f, l, c, h, n[d + 8], 11, -2022574463),
                                    h = v(h, f, l, c, n[d + 11], 16, 1839030562),
                                    c = v(c, h, f, l, n[d + 14], 23, -35309556),
                                    l = v(l, c, h, f, n[d + 1], 4, -1530992060),
                                    f = v(f, l, c, h, n[d + 4], 11, 1272893353),
                                    h = v(h, f, l, c, n[d + 7], 16, -155497632),
                                    c = v(c, h, f, l, n[d + 10], 23, -1094730640),
                                    l = v(l, c, h, f, n[d + 13], 4, 681279174),
                                    f = v(f, l, c, h, n[d + 0], 11, -358537222),
                                    h = v(h, f, l, c, n[d + 3], 16, -722521979),
                                    c = v(c, h, f, l, n[d + 6], 23, 76029189),
                                    l = v(l, c, h, f, n[d + 9], 4, -640364487),
                                    f = v(f, l, c, h, n[d + 12], 11, -421815835),
                                    h = v(h, f, l, c, n[d + 15], 16, 530742520),
                                    l = g(l, c = v(c, h, f, l, n[d + 2], 23, -995338651), h, f, n[d + 0], 6, -198630844),
                                    f = g(f, l, c, h, n[d + 7], 10, 1126891415),
                                    h = g(h, f, l, c, n[d + 14], 15, -1416354905),
                                    c = g(c, h, f, l, n[d + 5], 21, -57434055),
                                    l = g(l, c, h, f, n[d + 12], 6, 1700485571),
                                    f = g(f, l, c, h, n[d + 3], 10, -1894986606),
                                    h = g(h, f, l, c, n[d + 10], 15, -1051523),
                                    c = g(c, h, f, l, n[d + 1], 21, -2054922799),
                                    l = g(l, c, h, f, n[d + 8], 6, 1873313359),
                                    f = g(f, l, c, h, n[d + 15], 10, -30611744),
                                    h = g(h, f, l, c, n[d + 6], 15, -1560198380),
                                    c = g(c, h, f, l, n[d + 13], 21, 1309151649),
                                    l = g(l, c, h, f, n[d + 4], 6, -145523070),
                                    f = g(f, l, c, h, n[d + 11], 10, -1120210379),
                                    h = g(h, f, l, c, n[d + 2], 15, 718787259),
                                    c = g(c, h, f, l, n[d + 9], 21, -343485551),
                                    l = l + m >>> 0,
                                    c = c + b >>> 0,
                                    h = h + k >>> 0,
                                    f = f + x >>> 0
                            }
                            return r.endian([l, c, h, f])
                        }
                    )._ff = function (e, t, n, r, i, a, o) {
                        var s = e + (t & n | ~t & r) + (i >>> 0) + o;
                        return (s << a | s >>> 32 - a) + t
                    }
                    ,
                    s._gg = function (e, t, n, r, i, a, o) {
                        var s = e + (t & r | n & ~r) + (i >>> 0) + o;
                        return (s << a | s >>> 32 - a) + t
                    }
                    ,
                    s._hh = function (e, t, n, r, i, a, o) {
                        var s = e + (t ^ n ^ r) + (i >>> 0) + o;
                        return (s << a | s >>> 32 - a) + t
                    }
                    ,
                    s._ii = function (e, t, n, r, i, a, o) {
                        var s = e + (n ^ (t | ~r)) + (i >>> 0) + o;
                        return (s << a | s >>> 32 - a) + t
                    }
                    ,
                    s._blocksize = 16,
                    s._digestsize = 16,
                    e.exports = function (e, t) {
                        if (null == e)
                            throw new Error("Illegal argument " + e);
                        var n = r.wordsToBytes(s(e, t));
                        return t && t.asBytes ? n : t && t.asString ? o.bytesToString(n) : r.bytesToHex(n)
                    }
            }
            , function (e, t, n) {
                !function () {
                    "use strict";
                    var t = n(49)
                        , r = n(93)
                        , i = n(96)
                        , a = {
                        FrameSink: t,
                        SoftwareFrameSink: r,
                        WebGLFrameSink: i,
                        attach: function (e, t) {
                            return ("webGL" in (t = t || {}) ? t.webGL : i.isAvailable()) ? new i(e, t) : new r(e, t)
                        }
                    };
                    e.exports = a
                }()
            }
            , function (e, t, n) {
                var r = function (e) {
                    "use strict";
                    var t = Object.prototype
                        , n = t.hasOwnProperty
                        , r = "function" == typeof Symbol ? Symbol : {}
                        , i = r.iterator || "@@iterator"
                        , a = r.asyncIterator || "@@asyncIterator"
                        , o = r.toStringTag || "@@toStringTag";

                    function s(e, t, n) {
                        return Object.defineProperty(e, t, {
                            value: n,
                            enumerable: !0,
                            configurable: !0,
                            writable: !0
                        }),
                            e[t]
                    }

                    try {
                        s({}, "")
                    } catch (e) {
                        s = function (e, t, n) {
                            return e[t] = n
                        }
                    }

                    function u(e, t, n, r) {
                        var i = t && t.prototype instanceof h ? t : h
                            , a = Object.create(i.prototype)
                            , o = new w(r || []);
                        return a._invoke = function (e, t, n) {
                            var r = "suspendedStart";
                            return function (i, a) {
                                if ("executing" === r)
                                    throw new Error("Generator is already running");
                                if ("completed" === r) {
                                    if ("throw" === i)
                                        throw a;
                                    return B()
                                }
                                for (n.method = i,
                                         n.arg = a; ;) {
                                    var o = n.delegate;
                                    if (o) {
                                        var s = k(o, n);
                                        if (s) {
                                            if (s === c)
                                                continue;
                                            return s
                                        }
                                    }
                                    if ("next" === n.method)
                                        n.sent = n._sent = n.arg;
                                    else if ("throw" === n.method) {
                                        if ("suspendedStart" === r)
                                            throw r = "completed",
                                                n.arg;
                                        n.dispatchException(n.arg)
                                    } else
                                        "return" === n.method && n.abrupt("return", n.arg);
                                    r = "executing";
                                    var u = l(e, t, n);
                                    if ("normal" === u.type) {
                                        if (r = n.done ? "completed" : "suspendedYield",
                                        u.arg === c)
                                            continue;
                                        return {
                                            value: u.arg,
                                            done: n.done
                                        }
                                    }
                                    "throw" === u.type && (r = "completed",
                                        n.method = "throw",
                                        n.arg = u.arg)
                                }
                            }
                        }(e, n, o),
                            a
                    }

                    function l(e, t, n) {
                        try {
                            return {
                                type: "normal",
                                arg: e.call(t, n)
                            }
                        } catch (e) {
                            return {
                                type: "throw",
                                arg: e
                            }
                        }
                    }

                    e.wrap = u;
                    var c = {};

                    function h() {
                    }

                    function f() {
                    }

                    function d() {
                    }

                    var p = {};
                    p[i] = function () {
                        return this
                    }
                    ;
                    var y = Object.getPrototypeOf
                        , v = y && y(y(_([])));
                    v && v !== t && n.call(v, i) && (p = v);
                    var g = d.prototype = h.prototype = Object.create(p);

                    function m(e) {
                        ["next", "throw", "return"].forEach((function (t) {
                                s(e, t, (function (e) {
                                        return this._invoke(t, e)
                                    }
                                ))
                            }
                        ))
                    }

                    function b(e, t) {
                        var r;
                        this._invoke = function (i, a) {
                            function o() {
                                return new t((function (r, o) {
                                        !function r(i, a, o, s) {
                                            var u = l(e[i], e, a);
                                            if ("throw" !== u.type) {
                                                var c = u.arg
                                                    , h = c.value;
                                                return h && "object" == typeof h && n.call(h, "__await") ? t.resolve(h.__await).then((function (e) {
                                                        r("next", e, o, s)
                                                    }
                                                ), (function (e) {
                                                        r("throw", e, o, s)
                                                    }
                                                )) : t.resolve(h).then((function (e) {
                                                        c.value = e,
                                                            o(c)
                                                    }
                                                ), (function (e) {
                                                        return r("throw", e, o, s)
                                                    }
                                                ))
                                            }
                                            s(u.arg)
                                        }(i, a, r, o)
                                    }
                                ))
                            }

                            return r = r ? r.then(o, o) : o()
                        }
                    }

                    function k(e, t) {
                        var n = e.iterator[t.method];
                        if (void 0 === n) {
                            if (t.delegate = null,
                            "throw" === t.method) {
                                if (e.iterator.return && (t.method = "return",
                                    t.arg = void 0,
                                    k(e, t),
                                "throw" === t.method))
                                    return c;
                                t.method = "throw",
                                    t.arg = new TypeError("The iterator does not provide a 'throw' method")
                            }
                            return c
                        }
                        var r = l(n, e.iterator, t.arg);
                        if ("throw" === r.type)
                            return t.method = "throw",
                                t.arg = r.arg,
                                t.delegate = null,
                                c;
                        var i = r.arg;
                        return i ? i.done ? (t[e.resultName] = i.value,
                            t.next = e.nextLoc,
                        "return" !== t.method && (t.method = "next",
                            t.arg = void 0),
                            t.delegate = null,
                            c) : i : (t.method = "throw",
                            t.arg = new TypeError("iterator result is not an object"),
                            t.delegate = null,
                            c)
                    }

                    function x(e) {
                        var t = {
                            tryLoc: e[0]
                        };
                        1 in e && (t.catchLoc = e[1]),
                        2 in e && (t.finallyLoc = e[2],
                            t.afterLoc = e[3]),
                            this.tryEntries.push(t)
                    }

                    function P(e) {
                        var t = e.completion || {};
                        t.type = "normal",
                            delete t.arg,
                            e.completion = t
                    }

                    function w(e) {
                        this.tryEntries = [{
                            tryLoc: "root"
                        }],
                            e.forEach(x, this),
                            this.reset(!0)
                    }

                    function _(e) {
                        if (e) {
                            var t = e[i];
                            if (t)
                                return t.call(e);
                            if ("function" == typeof e.next)
                                return e;
                            if (!isNaN(e.length)) {
                                var r = -1
                                    , a = function t() {
                                    for (; ++r < e.length;)
                                        if (n.call(e, r))
                                            return t.value = e[r],
                                                t.done = !1,
                                                t;
                                    return t.value = void 0,
                                        t.done = !0,
                                        t
                                };
                                return a.next = a
                            }
                        }
                        return {
                            next: B
                        }
                    }

                    function B() {
                        return {
                            value: void 0,
                            done: !0
                        }
                    }

                    return f.prototype = g.constructor = d,
                        d.constructor = f,
                        f.displayName = s(d, o, "GeneratorFunction"),
                        e.isGeneratorFunction = function (e) {
                            var t = "function" == typeof e && e.constructor;
                            return !!t && (t === f || "GeneratorFunction" === (t.displayName || t.name))
                        }
                        ,
                        e.mark = function (e) {
                            return Object.setPrototypeOf ? Object.setPrototypeOf(e, d) : (e.__proto__ = d,
                                s(e, o, "GeneratorFunction")),
                                e.prototype = Object.create(g),
                                e
                        }
                        ,
                        e.awrap = function (e) {
                            return {
                                __await: e
                            }
                        }
                        ,
                        m(b.prototype),
                        b.prototype[a] = function () {
                            return this
                        }
                        ,
                        e.AsyncIterator = b,
                        e.async = function (t, n, r, i, a) {
                            void 0 === a && (a = Promise);
                            var o = new b(u(t, n, r, i), a);
                            return e.isGeneratorFunction(n) ? o : o.next().then((function (e) {
                                    return e.done ? e.value : o.next()
                                }
                            ))
                        }
                        ,
                        m(g),
                        s(g, o, "Generator"),
                        g[i] = function () {
                            return this
                        }
                        ,
                        g.toString = function () {
                            return "[object Generator]"
                        }
                        ,
                        e.keys = function (e) {
                            var t = [];
                            for (var n in e)
                                t.push(n);
                            return t.reverse(),
                                function n() {
                                    for (; t.length;) {
                                        var r = t.pop();
                                        if (r in e)
                                            return n.value = r,
                                                n.done = !1,
                                                n
                                    }
                                    return n.done = !0,
                                        n
                                }
                        }
                        ,
                        e.values = _,
                        w.prototype = {
                            constructor: w,
                            reset: function (e) {
                                if (this.prev = 0,
                                    this.next = 0,
                                    this.sent = this._sent = void 0,
                                    this.done = !1,
                                    this.delegate = null,
                                    this.method = "next",
                                    this.arg = void 0,
                                    this.tryEntries.forEach(P),
                                    !e)
                                    for (var t in this)
                                        "t" === t.charAt(0) && n.call(this, t) && !isNaN(+t.slice(1)) && (this[t] = void 0)
                            },
                            stop: function () {
                                this.done = !0;
                                var e = this.tryEntries[0].completion;
                                if ("throw" === e.type)
                                    throw e.arg;
                                return this.rval
                            },
                            dispatchException: function (e) {
                                if (this.done)
                                    throw e;
                                var t = this;

                                function r(n, r) {
                                    return o.type = "throw",
                                        o.arg = e,
                                        t.next = n,
                                    r && (t.method = "next",
                                        t.arg = void 0),
                                        !!r
                                }

                                for (var i = this.tryEntries.length - 1; i >= 0; --i) {
                                    var a = this.tryEntries[i]
                                        , o = a.completion;
                                    if ("root" === a.tryLoc)
                                        return r("end");
                                    if (a.tryLoc <= this.prev) {
                                        var s = n.call(a, "catchLoc")
                                            , u = n.call(a, "finallyLoc");
                                        if (s && u) {
                                            if (this.prev < a.catchLoc)
                                                return r(a.catchLoc, !0);
                                            if (this.prev < a.finallyLoc)
                                                return r(a.finallyLoc)
                                        } else if (s) {
                                            if (this.prev < a.catchLoc)
                                                return r(a.catchLoc, !0)
                                        } else {
                                            if (!u)
                                                throw new Error("try statement without catch or finally");
                                            if (this.prev < a.finallyLoc)
                                                return r(a.finallyLoc)
                                        }
                                    }
                                }
                            },
                            abrupt: function (e, t) {
                                for (var r = this.tryEntries.length - 1; r >= 0; --r) {
                                    var i = this.tryEntries[r];
                                    if (i.tryLoc <= this.prev && n.call(i, "finallyLoc") && this.prev < i.finallyLoc) {
                                        var a = i;
                                        break
                                    }
                                }
                                a && ("break" === e || "continue" === e) && a.tryLoc <= t && t <= a.finallyLoc && (a = null);
                                var o = a ? a.completion : {};
                                return o.type = e,
                                    o.arg = t,
                                    a ? (this.method = "next",
                                        this.next = a.finallyLoc,
                                        c) : this.complete(o)
                            },
                            complete: function (e, t) {
                                if ("throw" === e.type)
                                    throw e.arg;
                                return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg,
                                    this.method = "return",
                                    this.next = "end") : "normal" === e.type && t && (this.next = t),
                                    c
                            },
                            finish: function (e) {
                                for (var t = this.tryEntries.length - 1; t >= 0; --t) {
                                    var n = this.tryEntries[t];
                                    if (n.finallyLoc === e)
                                        return this.complete(n.completion, n.afterLoc),
                                            P(n),
                                            c
                                }
                            },
                            catch: function (e) {
                                for (var t = this.tryEntries.length - 1; t >= 0; --t) {
                                    var n = this.tryEntries[t];
                                    if (n.tryLoc === e) {
                                        var r = n.completion;
                                        if ("throw" === r.type) {
                                            var i = r.arg;
                                            P(n)
                                        }
                                        return i
                                    }
                                }
                                throw new Error("illegal catch attempt")
                            },
                            delegateYield: function (e, t, n) {
                                return this.delegate = {
                                    iterator: _(e),
                                    resultName: t,
                                    nextLoc: n
                                },
                                "next" === this.method && (this.arg = void 0),
                                    c
                            }
                        },
                        e
                }(e.exports);
                try {
                    regeneratorRuntime = r
                } catch (e) {
                    Function("r", "regeneratorRuntime = r")(r)
                }
            }
            , , , , , , , , , , , , , function (e, t, n) {
                "use strict";
                n.r(t);
                var r = n(2)
                    , i = n.n(r)
                    , a = n(4)
                    , o = n.n(a)
                    , s = n(1)
                    , u = n.n(s)
                    , l = n(5)
                    , c = n.n(l)
                    , h = n(6)
                    , f = n.n(h)
                    , d = n(3)
                    , p = n.n(d)
                    , y = n(0)
                    , v = n.n(y)
                    , g = n(13)
                    , m = n.n(g)
                    , b = n(10)
                    , k = n.n(b)
                    , x = n(11);

                function P(e, t) {
                    var n;
                    if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                        if (Array.isArray(e) || (n = function (e, t) {
                            if (!e)
                                return;
                            if ("string" == typeof e)
                                return w(e, t);
                            var n = Object.prototype.toString.call(e).slice(8, -1);
                            "Object" === n && e.constructor && (n = e.constructor.name);
                            if ("Map" === n || "Set" === n)
                                return Array.from(e);
                            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                                return w(e, t)
                        }(e)) || t && e && "number" == typeof e.length) {
                            n && (e = n);
                            var r = 0
                                , i = function () {
                            };
                            return {
                                s: i,
                                n: function () {
                                    return r >= e.length ? {
                                        done: !0
                                    } : {
                                        done: !1,
                                        value: e[r++]
                                    }
                                },
                                e: function (e) {
                                    throw e
                                },
                                f: i
                            }
                        }
                        throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                    }
                    var a, o = !0, s = !1;
                    return {
                        s: function () {
                            n = e[Symbol.iterator]()
                        },
                        n: function () {
                            var e = n.next();
                            return o = e.done,
                                e
                        },
                        e: function (e) {
                            s = !0,
                                a = e
                        },
                        f: function () {
                            try {
                                o || null == n.return || n.return()
                            } finally {
                                if (s)
                                    throw a
                            }
                        }
                    }
                }

                function w(e, t) {
                    (null == t || t > e.length) && (t = e.length);
                    for (var n = 0, r = new Array(t); n < t; n++)
                        r[n] = e[n];
                    return r
                }

                var _ = x.a.get("Events.js")
                    , B = function () {
                    function e(t) {
                        i()(this, e),
                            v()(this, "eventsQueue", {}),
                            v()(this, "target", {}),
                            v()(this, "disallowRepeat", !1),
                            this.target = t
                    }

                    return o()(e, [{
                        key: "add",
                        value: function () {
                            var e, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],
                                n = arguments.length > 1 ? arguments[1] : void 0,
                                r = arguments.length > 2 ? arguments[2] : void 0, i = P(t);
                            try {
                                for (i.s(); !(e = i.n()).done;) {
                                    var a = e.value;
                                    this.on(a, n, r)
                                }
                            } catch (e) {
                                i.e(e)
                            } finally {
                                i.f()
                            }
                        }
                    }, {
                        key: "on",
                        value: function (e, t, n) {
                            if (void 0 === this.eventsQueue[e] && (this.eventsQueue[e] = {
                                methods: [],
                                once: !1
                            }),
                            "function" == typeof t) {
                                if (!this.disallowRepeat || !this.eventsQueue[e].methods.includes(t))
                                    return this.eventsQueue[e].methods.push(t),
                                    void 0 !== n && (this.eventsQueue[e].once = n),
                                        this.target
                            } else
                                _.error("on", "the argument is not function.", t)
                        }
                    }, {
                        key: "once",
                        value: function (e, t) {
                            this.on(e, t, !0)
                        }
                    }, {
                        key: "off",
                        value: function (e, t) {
                            var n = this.eventsQueue[e];
                            if (n) {
                                var r = n.methods;
                                if (t)
                                    for (var i = r.length; i--;)
                                        r[i] === t && r.splice(i, 1);
                                else
                                    delete this.eventsQueue[e];
                                return this.target
                            }
                        }
                    }, {
                        key: "emit",
                        value: function (e) {
                            for (var t = this, n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++)
                                r[i - 1] = arguments[i];
                            var a = this.eventsQueue[e];
                            if (a) {
                                var o = a.methods;
                                return o.forEach((function (e) {
                                        e.apply(t.target, r)
                                    }
                                )),
                                a.once && this.off(e),
                                    this.target
                            }
                        }
                    }, {
                        key: "clear",
                        value: function (e) {
                            delete this.eventsQueue[e]
                        }
                    }, {
                        key: "clearAll",
                        value: function () {
                            this.eventsQueue = {}
                        }
                    }]),
                        e
                }()
                    , T = function (e) {
                    var t = new B(e);
                    return function (e) {
                        return t.target = e,
                            t
                    }
                }
                    , E = n(12)
                    , S = n.n(E)
                    , C = x.a.get("Element.js")
                    , R = function () {
                    function e() {
                        i()(this, e)
                    }

                    return o()(e, null, [{
                        key: "createEl",
                        value: function () {
                            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "div"
                                , t = arguments.length > 1 ? arguments[1] : void 0;
                            if ("string" != typeof e)
                                return C.error("please input element name"),
                                    null;
                            var n = document.createElement(e, t);
                            return n
                        }
                    }, {
                        key: "registerElement",
                        value: function (e) {
                            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : HTMLElement
                                , n = arguments.length > 2 ? arguments[2] : void 0
                                , r = document.registerElement(e, {
                                prototype: Object.create(t.prototype),
                                extends: n
                            });
                            return r
                        }
                    }, {
                        key: "addEl",
                        value: function (e, t) {
                            if (e && t)
                                try {
                                    t.appendChild(e)
                                } catch (e) {
                                    C.error(e)
                                }
                        }
                    }, {
                        key: "removeEl",
                        value: function (e) {
                            try {
                                var t = e.parentNode;
                                t && t.removeChild(e)
                            } catch (e) {
                                C.error(e)
                            }
                        }
                    }, {
                        key: "addClass",
                        value: function (e) {
                            try {
                                for (var t, n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++)
                                    r[i - 1] = arguments[i];
                                (t = e.classList).add.apply(t, r)
                            } catch (e) {
                                C.error(e)
                            }
                        }
                    }, {
                        key: "removeClass",
                        value: function () {
                        }
                    }, {
                        key: "hasClass",
                        value: function () {
                        }
                    }, {
                        key: "isElement",
                        value: function (e) {
                            try {
                                return e instanceof HTMLElement
                            } catch (t) {
                                return "object" === S()(e) && 1 === e.nodeType && "object" === S()(e.style) && "object" === S()(e.ownerDocument)
                            }
                        }
                    }, {
                        key: "setAttributes",
                        value: function (t, n) {
                            if (e.isElement(t))
                                for (var r = 0, i = n.length; r < i; r++) {
                                    var a = n[r]
                                        , o = a.name;
                                    o = a.name.replace(/["|']/g, ""),
                                        t.setAttribute(o, a.value)
                                }
                        }
                    }, {
                        key: "syncAttributes",
                        value: function (t, n) {
                            var r = n.attributes;
                            e.setAttributes(t, r);
                            var i = t.attributes;
                            e.setAttributes(n, i)
                        }
                    }, {
                        key: "getClientWidth",
                        value: function () {
                            return document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth
                        }
                    }, {
                        key: "getClientHeight",
                        value: function () {
                            return document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight
                        }
                    }, {
                        key: "adaptSizeElement",
                        value: function (e, t, n, r) {
                            var i = r;
                            i.width = e || i.width || $box.offsetWidth,
                                i.height = t || i.height || $box.offsetHeight;
                            i.width,
                                i.height;
                            i.style.position = "absolute",
                                i.style.width = "100%",
                                i.style.height = "100%",
                                i.style.left = "0",
                                i.style.top = "0",
                                i.style.objectFit = "contain",
                                i.style.display = "inline-block"
                        }
                    }]),
                        e
                }()
                    , L = n(28)
                    , A = n.n(L)
                    , D = function () {
                    function e() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        i()(this, e),
                            v()(this, "logger", null),
                            v()(this, "__instance__", null),
                            v()(this, "__singleton__", null),
                            this.options = t,
                            this.setLogger(this.constructor.name + ".js")
                    }

                    return o()(e, [{
                        key: "setLogger",
                        value: function (e) {
                            this.logger = new x.a(e)
                        }
                    }, {
                        key: "getLogger",
                        value: function () {
                            return this.logger
                        }
                    }, {
                        key: "setOptions",
                        value: function (e) {
                            Object.assign(this.options, e)
                        }
                    }, {
                        key: "events",
                        get: function () {
                            return this.options && this.options.events ? this.options.events(this) : T(this)
                        }
                    }, {
                        key: "toString",
                        value: function () {
                            return JSON.stringify(this)
                        }
                    }], [{
                        key: "getInstance",
                        value: function () {
                            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)
                                t[n] = arguments[n];
                            return this.__instance__ = A()(this, t),
                                this.__instance__
                        }
                    }, {
                        key: "getSingleton",
                        value: function () {
                            if (!this.__singleton__) {
                                for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)
                                    t[n] = arguments[n];
                                this.__singleton__ = A()(this, t)
                            }
                            return this.__singleton__
                        }
                    }]),
                        e
                }();

                function O(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var M = function (e) {
                    c()(n, e);
                    var t = O(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this),
                            v()(u()(r), "component", null),
                            r.component = e.component,
                            r
                    }

                    return o()(n, [{
                        key: "confirm",
                        value: function () {
                        }
                    }, {
                        key: "show",
                        value: function () {
                            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "";
                            this.component.data.content = e,
                            "default" !== this.component.data.display && "" !== this.component.data.display || this.component.showBox(),
                            "show" !== this.component.data.display && this.component.show()
                        }
                    }, {
                        key: "hide",
                        value: function () {
                            this.component.hide()
                        }
                    }]),
                        n
                }(D)
                    , I = n(25)
                    , N = function () {
                    function e() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        i()(this, e),
                            v()(this, "logger", null),
                            this.options = t,
                            this.debug = t.debug || !1,
                            this.setLogger(this.constructor.name + ".js")
                    }

                    return o()(e, [{
                        key: "setLogger",
                        value: function (e) {
                            this.logger = new x.a(e),
                                this.logger.setLevel(3)
                        }
                    }, {
                        key: "getLogger",
                        value: function () {
                            return this.logger
                        }
                    }, {
                        key: "setOptions",
                        value: function (e) {
                            Object.assign(this.options, e)
                        }
                    }, {
                        key: "events",
                        get: function () {
                            return this.options && this.options.events ? this.options.events(this) : T(this)
                        }
                    }, {
                        key: "alert",
                        get: function () {
                            var e = "";
                            return this.options && this.options.alertError && (e = this.options.alertError),
                                e
                        }
                    }, {
                        key: "toString",
                        value: function () {
                            return JSON.stringify(this)
                        }
                    }]),
                        e
                }()
                    , U = n(9);

                function F(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var H = function (e) {
                    c()(n, e);
                    var t = F(n);

                    function n() {
                        var e;
                        return i()(this, n),
                            e = t.call(this),
                            v()(u()(e), "loadData", null),
                            v()(u()(e), "sourceURL", ""),
                            e
                    }

                    return o()(n, [{
                        key: "init",
                        value: function () {
                        }
                    }, {
                        key: "setLoadData",
                        value: function (e) {
                            this.loadData = e
                        }
                    }, {
                        key: "setSourceURL",
                        value: function (e) {
                            this.sourceURL = e
                        }
                    }, {
                        key: "getLoadData",
                        value: function () {
                            return this.getLoadData
                        }
                    }, {
                        key: "getSourceURL",
                        value: function () {
                            return this.getSourceURL
                        }
                    }]),
                        n
                }(N)
                    , j = {
                    LOAD_PLAYLIST: 10,
                    get 10() {
                        return "loading playlist"
                    },
                    LOADED_PLAYLIST: 11,
                    get 11() {
                        return "playlist is loaded"
                    },
                    IDLE: 0,
                    get 0() {
                        return "is free"
                    },
                    LOADING: 1,
                    get 1() {
                        return "loading segment"
                    },
                    DONE: 2,
                    get 2() {
                        return "segment is loaded"
                    },
                    ERROR: 3,
                    get 3() {
                        return "load get error"
                    }
                }
                    , z = /^(\d+)x(\d+)$/
                    , W = /\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g
                    , V = function () {
                    function e(t) {
                        for (var n in i()(this, e),
                        "string" == typeof t && (t = e.parseAttrList(t)),
                            t)
                            t.hasOwnProperty(n) && (this[n] = t[n])
                    }

                    return o()(e, [{
                        key: "decimalInteger",
                        value: function (e) {
                            var t = parseInt(this[e], 10);
                            return t > Number.MAX_SAFE_INTEGER ? 1 / 0 : t
                        }
                    }, {
                        key: "hexadecimalInteger",
                        value: function (e) {
                            if (this[e]) {
                                var t = (this[e] || "0x").slice(2);
                                t = (1 & t.length ? "0" : "") + t;
                                for (var n = new Uint8Array(t.length / 2), r = 0; r < t.length / 2; r++)
                                    n[r] = parseInt(t.slice(2 * r, 2 * r + 2), 16);
                                return n
                            }
                            return null
                        }
                    }, {
                        key: "hexadecimalIntegerAsNumber",
                        value: function (e) {
                            var t = parseInt(this[e], 16);
                            return t > Number.MAX_SAFE_INTEGER ? 1 / 0 : t
                        }
                    }, {
                        key: "decimalFloatingPoint",
                        value: function (e) {
                            return parseFloat(this[e])
                        }
                    }, {
                        key: "enumeratedString",
                        value: function (e) {
                            return this[e]
                        }
                    }, {
                        key: "decimalResolution",
                        value: function (e) {
                            var t = z.exec(this[e]);
                            if (null !== t)
                                return {
                                    width: parseInt(t[1], 10),
                                    height: parseInt(t[2], 10)
                                }
                        }
                    }], [{
                        key: "parseAttrList",
                        value: function (e) {
                            var t, n = {};
                            for (W.lastIndex = 0; null !== (t = W.exec(e));) {
                                var r = t[2];
                                0 === r.indexOf('"') && r.lastIndexOf('"') === r.length - 1 && (r = r.slice(1, -1)),
                                    n[t[1]] = r
                            }
                            return n
                        }
                    }]),
                        e
                }()
                    , X = x.a.get("M3U8Parser.js", {
                    level: 2
                })
                    , Y = {
                    lineDelimiter: /\r?\n/,
                    extensionHeader: "#EXTM3U",
                    tagPrefix: "#EXT",
                    segmentPrefix: "#EXTINF",
                    segmentParse: /^#EXTINF: *([0-9.]+)(, *(.+?)?)?$/,
                    tagParse: /^#EXT-X-([A-Z-]+)(:(.+))?$/,
                    version: "VERSION",
                    allowCache: "ALLOW-CACHE",
                    combined: "COMBINED",
                    endList: "ENDLIST",
                    targetDuration: "TARGETDURATION",
                    mediaSequence: "MEDIA-SEQUENCE",
                    discontinuity: "DISCONTINUITY",
                    streamInf: "STREAM-INF",
                    key: "KEY",
                    isComment: function (e) {
                        return e && "#" === e[0] && !e.startsWith(Y.tagPrefix)
                    },
                    isBlank: function (e) {
                        return "" === e
                    },
                    canStrip: function (e) {
                        return Y.isBlank(e) || Y.isComment(e)
                    }
                }
                    , G = 0
                    , $ = 1
                    , K = {
                    file: void 0,
                    name: void 0,
                    start: 0,
                    end: 0,
                    discontinuity: void 0,
                    duration: void 0
                }
                    , q = function () {
                    function e(t) {
                        var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        i()(this, e),
                            v()(this, "source", ""),
                            v()(this, "segments", []),
                            v()(this, "_currentSegment", null),
                            v()(this, "discontinuous", null),
                            v()(this, "tags", {
                                VERSION: void 0,
                                TARGETDURATION: void 0,
                                KEY: void 0
                            }),
                            v()(this, "keyAttrs", null),
                            v()(this, "_state", null),
                            this.source = t,
                            this.options = n,
                            this.parse(this.source)
                    }

                    return o()(e, [{
                        key: "readSegment",
                        value: function (e) {
                            var t = Y.segmentParse.exec(e);
                            if (null !== t) {
                                var n = parseFloat(t[1], 10)
                                    , r = t[3];
                                n % 1 != 0 && this.tags.VERSION >= 3 && X.info("readsegment", "Version must be 3 or higher to support floating.", "duration:", n),
                                n < this.tags.TARGETDURATION && X.info("readsegment", "Segment duration must be less than the TARGETDURATION", "duration:", n),
                                    n *= 1e3,
                                    this._currentSegment = Object.assign({}, K, {
                                        duration: n,
                                        name: r,
                                        discontinuity: this.discontinuous
                                    });
                                var i = this.segments[this.segments.length - 1] || {
                                    start: 0,
                                    end: 0
                                };
                                this._currentSegment.start = i.end,
                                    this._currentSegment.end = i.end + n,
                                    this.discontinuous = !1,
                                    this._state = $
                            } else
                                X.warn("readsegment", "read segment failed", "line:", e)
                        }
                    }, {
                        key: "readTag",
                        value: function (e) {
                            var t = Y.tagParse.exec(e);
                            if (null !== t)
                                return {
                                    name: t[1],
                                    value: t[3]
                                }
                        }
                    }, {
                        key: "readLine",
                        value: function (e) {
                            if (e.startsWith(Y.segmentPrefix))
                                return this.readSegment(e);
                            var t = this.readTag(e);
                            if (t)
                                switch (t.name) {
                                    case Y.version:
                                        this.tags.VERSION = parseFloat(t.value, 10);
                                        break;
                                    case Y.mediaSequence:
                                        this.tags.MEDIA_SEQUENCE = parseFloat(t.value, 10);
                                        break;
                                    case Y.allowCache:
                                        this.tags.ALLOW_CACHE = !!/\s*(YES|yes)\s*/.test(t.value);
                                        break;
                                    case Y.discontinuity:
                                        this.tags.DISCONTINUITY = !0,
                                            this.discontinuous = !0;
                                        break;
                                    case Y.targetDuration:
                                        this.tags.TARGETDURATION = parseFloat(t.value, 10);
                                        break;
                                    case Y.combined:
                                        this.tags.COMBINED = t.value;
                                        break;
                                    case Y.streamInf:
                                        this.tags.STREAM_INF = t.value;
                                        break;
                                    case Y.endList:
                                        this.tags.ENDLIST = "EOF";
                                        break;
                                    case Y.key:
                                        this.tags.KEY = t.value,
                                            this.keyAttrs = new V(t.value),
                                            this.keyAttrs.decryptiv = this.keyAttrs.hexadecimalInteger("IV"),
                                            this.keyAttrs.key = void 0;
                                        break;
                                    default:
                                        X.warn("readLine", "unknow line", "line:", e)
                                }
                        }
                    }, {
                        key: "addFile",
                        value: function (e) {
                            if ("#" !== e[0]) {
                                this._currentSegment.file = e;
                                var t = this.parseSDParam(e);
                                if (t >= 0) {
                                    this._currentSegment.start = t,
                                        this._currentSegment.end = t + this._currentSegment.duration;
                                    var n = this.segments[this.segments.length - 1] || {
                                        sd: 0,
                                        start: 0,
                                        end: 0
                                    };
                                    n.duration = t - n.start,
                                        n.end = t
                                }
                                this._currentSegment.name || (this._currentSegment.name = e.substr(Math.max(0, e.lastIndexOf("/")), e.lastIndexOf("."))),
                                    this.segments.push(this._currentSegment),
                                    this._state = G
                            } else {
                                var r = this.readTag(e);
                                switch (r.name) {
                                    case "PROGRAM-DATE-TIME":
                                        var i = new Date(r.value);
                                        this._currentSegment.time = i;
                                        break;
                                    default:
                                        X.warn("addFile", "Invalid tag.", "tag.name:", r.name)
                                }
                            }
                        }
                    }, {
                        key: "parseSDParam",
                        value: function (e) {
                            var t = -1;
                            try {
                                var n = new URL(e).searchParams.get("sd");
                                n && (t = parseInt(n, 10))
                            } catch (e) {
                            }
                            return t
                        }
                    }, {
                        key: "parse",
                        value: function (e) {
                            var t = this;
                            if ("string" == typeof (e = e || this.source)) {
                                this._state = G,
                                    this.discontinuous = !1;
                                var n = e.split(Y.lineDelimiter);
                                if (n[0] == Y.extensionHeader)
                                    return n.forEach((function (e) {
                                            if (!Y.canStrip(e))
                                                switch (t._state) {
                                                    case G:
                                                        t.readLine(e);
                                                        break;
                                                    case $:
                                                        t.addFile(e);
                                                        break;
                                                    default:
                                                        Object(I.a)("parsing m3u8 get an error, it is unknow state.")
                                                }
                                        }
                                    )),
                                        this;
                                X.error("parse", "it is not a valid  m3u8 header", "header:", n[0])
                            } else
                                Object(I.a)("m3u8 file is not text.", e)
                        }
                    }, {
                        key: "version",
                        get: function () {
                            return this.tags.VERSION
                        }
                    }, {
                        key: "duration",
                        get: function () {
                            return this.segments.length ? this.segments.reduce((function () {
                                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0
                                        , t = arguments.length > 1 ? arguments[1] : void 0
                                        , n = "number" == typeof e ? e : e.duration;
                                    return n + t.duration
                                }
                            )) : 0
                        }
                    }, {
                        key: "targetDuration",
                        get: function () {
                            return this.tags.TARGETDURATION
                        }
                    }, {
                        key: "mediaSequence",
                        get: function () {
                            return this.tags.MEDIA_SEQUENCE
                        }
                    }, {
                        key: "allowCache",
                        get: function () {
                            return this.tags.ALLOW_CACHE
                        }
                    }, {
                        key: "length",
                        get: function () {
                            return this.segments.length
                        }
                    }]),
                        e
                }()
                    , Q = n(45)
                    , Z = n.n(Q);

                function J() {
                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "Object";
                    return function (t) {
                        var n = "[object " + e + "]";
                        return Object.prototype.toString.call(t) == n
                    }
                }

                var ee = function () {
                    function e() {
                        i()(this, e)
                    }

                    return o()(e, null, [{
                        key: "importScripts",
                        value: function (e, t, n) {
                            var r = "ready" + Date.now();
                            e instanceof Array ? Z()(e, r) : Z()([e], r),
                                Z.a.ready(r, {
                                    success: t,
                                    error: n
                                })
                        }
                    }, {
                        key: "blobData",
                        value: function (e) {
                            var t = new Blob([e], {
                                type: "application/javascript"
                            });
                            return URL.createObjectURL(t)
                        }
                    }, {
                        key: "escapeHTML",
                        value: function (t) {
                            if (e.isString(t))
                                return t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;")
                        }
                    }, {
                        key: "getInnerWidthHeight",
                        value: function () {
                            return {
                                width: window.innerWidth,
                                height: window.innerHeight
                            }
                        }
                    }, {
                        key: "Fullscreen",
                        value: function (e) {
                            var t = e || document.documentElement;
                            t.requestFullscreen ? t.requestFullscreen() : t.mozRequestFullScreen ? t.mozRequestFullScreen() : t.webkitRequestFullScreen && (t.webkitRequestFullScreen(),
                                setTimeout((function () {
                                        console.error("fullscreen success"),
                                            document.dispatchEvent(new Event("fullscreenchange"))
                                    }
                                ), 0))
                        }
                    }, {
                        key: "exitFullscreen",
                        value: function () {
                            var e = document;
                            e.exitFullscreen ? e.exitFullscreen() : e.mozCancelFullScreen ? e.mozCancelFullScreen() : e.webkitExitFullscreen && (e.webkitExitFullscreen(),
                                setTimeout((function () {
                                        console.error("exitfullscreen success"),
                                            document.dispatchEvent(new Event("fullscreenchange"))
                                    }
                                ), 0))
                        }
                    }, {
                        key: "buildFilePath",
                        value: function (e, t) {
                            return e.map((function (e) {
                                    return t + e
                                }
                            ))
                        }
                    }, {
                        key: "insertSort",
                        value: function (e, t, n) {
                            var r, i, a = e.length;
                            if (0 !== a)
                                if (n) {
                                    var o = n(t);
                                    r = o.key,
                                        i = o.value;
                                    for (var s = 0; s < a; s++)
                                        if (i < e[s][r]) {
                                            for (var u = a; u > s;)
                                                e[u] = e[u - 1],
                                                    u--;
                                            return void (e[s] = t)
                                        }
                                    e.push(t)
                                } else {
                                    i = t;
                                    for (var l = 0; l < a; l++)
                                        if (i < e[l]) {
                                            for (var c = a; c > l;)
                                                e[c] = e[c - 1],
                                                    c--;
                                            return void (e[l] = i)
                                        }
                                    e.push(i)
                                }
                            else
                                e.push(t)
                        }
                    }, {
                        key: "isSafari",
                        value: function () {
                            var e = navigator.userAgent;
                            return /Safari/.test(e) && !/Chrome/.test(e)
                        }
                    }, {
                        key: "msec2sec",
                        value: function (e) {
                            var t = (e / 1e3).toFixed(3);
                            return parseFloat(t, 10)
                        }
                    }, {
                        key: "getPid",
                        value: function (e) {
                            var t = "";
                            try {
                                t = new window.URL(e).searchParams.get("pid")
                            } catch (e) {
                                return t
                            }
                            return t
                        }
                    }]),
                        e
                }();
                v()(ee, "isObject", (function () {
                        return J("Object")
                    }
                )),
                    v()(ee, "isString", (function () {
                            return J("String")
                        }
                    )),
                    v()(ee, "isFunction", (function () {
                            return J("Function")
                        }
                    ));
                var te = n(34)
                    , ne = n.n(te);

                function re(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var ie = function (e) {
                    c()(n, e);
                    var t = re(n);

                    function n() {
                        return i()(this, n),
                            t.call(this)
                    }

                    return o()(n, [{
                        key: "size",
                        get: function () {
                            return this.length
                        }
                    }, {
                        key: "add",
                        value: function (e) {
                            this.push(Object.freeze(e))
                        }
                    }, {
                        key: "addAll",
                        value: function (e) {
                            var t = this;
                            e.forEach((function (e) {
                                    t.add(e)
                                }
                            ))
                        }
                    }, {
                        key: "get",
                        value: function (e) {
                            return this[e]
                        }
                    }, {
                        key: "getLast",
                        value: function () {
                            return this[this.length - 1]
                        }
                    }, {
                        key: "getBy",
                        value: function (e) {
                            var t = this;
                            if ("function" == typeof e) {
                                var n = new this.constructor;
                                return this.every((function (r, i) {
                                        return !0 === e.call(t, r, i, t) && n.add(r),
                                            !0
                                    }
                                )),
                                    n
                            }
                        }
                    }, {
                        key: "indexOfByTime",
                        value: function (e, t) {
                            t || (t = function (t) {
                                    return e >= t.start && e < t.end
                                }
                            );
                            for (var n = this.length - 1, r = 0; r <= n;) {
                                var i = Math.floor((n + r) / 2)
                                    , a = this[i];
                                if (t(a))
                                    return i;
                                a.start > e ? n = i - 1 : r = i + 1
                            }
                            return -1
                        }
                    }, {
                        key: "getByTime",
                        value: function (e) {
                            var t = this.indexOfByTime(e);
                            if (t >= 0)
                                return this[t]
                        }
                    }, {
                        key: "getByKey",
                        value: function () {
                            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)
                                t[n] = arguments[n];
                            return Array.isArray(t[0]) && (t = t[0]),
                                this.getBy((function (e) {
                                        var n = !1;
                                        return t.every((function (t) {
                                                return !Object.prototype.hasOwnProperty.call(e, t) || (n = !0,
                                                    !1)
                                            }
                                        )),
                                            n
                                    }
                                ))
                        }
                    }, {
                        key: "getByValue",
                        value: function () {
                            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)
                                t[n] = arguments[n];
                            return Array.isArray(t[0]) && (t = t[0]),
                                this.getBy((function (e) {
                                        var n = !1;
                                        return e.each((function (e, r) {
                                                if (t.includes(r))
                                                    return n = !0,
                                                        !1
                                            }
                                        )),
                                            n
                                    }
                                ))
                        }
                    }, {
                        key: "getByKeyValue",
                        value: function (e, t) {
                            return this.getBy((function (n) {
                                    return n[e] === t
                                }
                            ))
                        }
                    }, {
                        key: "getValues",
                        value: function () {
                            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)
                                t[n] = arguments[n];
                            return Array.isArray(t[0]) && (t = t[0]),
                                this.map((function (e) {
                                        return t.length ? e.get(e, t) : e.getValues(e)
                                    }
                                ))
                        }
                    }, {
                        key: "indexOfBy",
                        value: function (e) {
                            var t = 0
                                , n = this.length;
                            for (e = e || function () {
                                return !1
                            }
                                ; t < n;) {
                                if (!0 === e.call(this, this[t], t, this))
                                    return t;
                                t++
                            }
                            return -1
                        }
                    }, {
                        key: "indexOfByKey",
                        value: function (e, t) {
                            return this.indexOfBy((function (n) {
                                    return n[e] === t
                                }
                            ))
                        }
                    }, {
                        key: "indexOfByKeyValue",
                        value: function (e, t) {
                            return this.indexOfByKey(e, t)
                        }
                    }, {
                        key: "each",
                        value: function (e) {
                            if ("function" == typeof e)
                                return this.forEach(e),
                                    this
                        }
                    }, {
                        key: "remove",
                        value: function (e, t) {
                            return this.length <= 0 || (e = e < 0 ? 0 : e,
                                t = t || e + 1,
                                this.splice(e, t - e)),
                                this
                        }
                    }, {
                        key: "removeItem",
                        value: function () {
                            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)
                                t[n] = arguments[n];
                            return Array.isArray(t[0]) && (t = t[0]),
                                this.removeBy((function (e) {
                                        return t.includes(e)
                                    }
                                ))
                        }
                    }, {
                        key: "removeBy",
                        value: function (e) {
                            for (var t = 0, n = this.length; t < n; t++)
                                !0 === e.call(this, this[t], t, this) && (this.splice(t, 1),
                                    n--,
                                    t--);
                            return this
                        }
                    }, {
                        key: "removeByKeyValue",
                        value: function (e, t) {
                            return this.removeBy((function (n) {
                                    return n[e] === t
                                }
                            ))
                        }
                    }, {
                        key: "toJSON",
                        value: function () {
                            var e = Array.from(this);
                            return e.forEach((function (t, n) {
                                    e[n] = t && "function" == typeof t.toJSON ? t.toJSON() : t
                                }
                            )),
                                e
                        }
                    }, {
                        key: "toArray",
                        value: function () {
                            return Array.from(this)
                        }
                    }]),
                        n
                }(ne()(Array))
                    , ae = function () {
                    function e() {
                        i()(this, e)
                    }

                    return o()(e, [{
                        key: "pair",
                        value: function () {
                            return Object.entries(this)
                        }
                    }, {
                        key: "keys",
                        value: function () {
                            return Object.keys(this)
                        }
                    }, {
                        key: "set",
                        value: function (e, t) {
                            return this[e] = t,
                                this
                        }
                    }, {
                        key: "get",
                        value: function (e) {
                            return this[e]
                        }
                    }, {
                        key: "add",
                        value: function (e, t) {
                            return Object.prototype.hasOwnProperty.call(this, e) || this.set(e, t),
                                this
                        }
                    }, {
                        key: "addAll",
                        value: function (e) {
                            for (var t in e)
                                this.add(t, e[t]);
                            return this
                        }
                    }, {
                        key: "toJSON",
                        value: function () {
                            var e = {};
                            for (var t in this)
                                Object.prototype.hasOwnProperty.call(this, t) && (e[t] = this[t]);
                            return e
                        }
                    }]),
                        e
                }();

                function oe(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var se = function (e) {
                    c()(n, e);
                    var t = oe(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this, e),
                            v()(u()(r), "no", 0),
                            v()(u()(r), "name", null),
                            v()(u()(r), "duration", 0),
                            v()(u()(r), "file", null),
                            v()(u()(r), "start", 0),
                            v()(u()(r), "end", 0),
                            Object.assign(u()(r), e),
                            r
                    }

                    return n
                }(ae);

                function ue(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var le, ce, he, fe = function (e) {
                    c()(n, e);
                    var t = ue(n);

                    function n(e) {
                        return i()(this, n),
                            t.call(this, e)
                    }

                    return o()(n, [{
                        key: "add",
                        value: function (e) {
                            e instanceof se || (e = new se(e)),
                                e.no = this.length + 1,
                            ee.isObject(e) && this.push(e)
                        }
                    }]),
                        n
                }(ie), de = {
                    ProcessorResetEnd: "DataProcessorController.processorResetEnd",
                    ProcessorDemuxedFPSNumber: "DataProcessorController.processorDemuxedFPSNumber",
                    DataProcessorReady: "DataProcessorController.dataProcessorReady",
                    DecodeStartDecode: "DecodeController.startDecode",
                    DecodeFlush: "DecodeController.flush",
                    DecodeDecoded: "DecodeController.decoded",
                    DecodeApppendEnd: "DecodeController.appendEnd",
                    DecodeFlushEnd: "DecodeController.flushEnd",
                    DecodeReady: "DecodeController.ready",
                    DemuxResetEnd: "DemuxController.resetEnd",
                    DemuxStartDemux: "DemuxController.startDemux",
                    DemuxLast: "DemuxController.last",
                    DemuxVideo: "DemuxController.video",
                    DemuxAAC: "DemuxController.AAC",
                    DemuxReady: "DemuxController.ready",
                    DemuxNextDemux: "DemuxController.next",
                    ImagePlayerRenderEnd: "ImagePlayer.renderEnd",
                    ImagePlayerWait: "ImagePlayer.wait",
                    ImagePlayerReady: "ImagePlayer.ready",
                    ImagePlayerEnd: "ImagePlayer.end",
                    ImagePlayerBuffeUpdate: "ImagePlayer.bufferUpdate",
                    ImagePlayerInitTime: "ImagePlayer.initTime",
                    ControlBarPlay: "ControlBar.onPlay",
                    ControlBarPause: "ControlBar.onPause",
                    ControlBarPauseLoading: "ControlBar.onPauseLoading",
                    LoadDataReadBufferByNo: "LoadData.readBufferByNo",
                    LoadDataReadBuffer: "LoadData.readBuffer",
                    LoadDataRead: "LoadData.onRead",
                    LoadDataSeek: "LoadData.onSeek",
                    LoadDataFirstLoaded: "LoadData.onFirstLoaded",
                    LoaderPlayListStart: "Loader.playlistStart",
                    LoaderLoading: "Loader.onLoading",
                    LoaderError: "Loader.onError",
                    LoaderLoaded: "Loader.onLoaded",
                    LoaderUpdateSpeed: "Loader.updateSpeed",
                    LoaderLoadFile: "Loader.loadFile",
                    LoaderPlayListLoaded: "Loader.playlistLoaded",
                    AudioPlayerReady: "AudioPlayer.MSEReady",
                    AudioPlayerDataReady: "AudioPlayer.dataReady",
                    AudioPlayerWait: "AudioPlayer.wait",
                    AudioPlayerEnd: "AudioPlayer.end",
                    AudioPlayerPlaySuccess: "AudioPlayer.playSuccess",
                    AudioPlayerPlayFail: "AudioPlayer.playFail",
                    PlayerMaxPTS: "DemuxController.maxpts",
                    PlayerSeekEnd: "Player.seekend",
                    PlayerSpeedTo: "Player.speedTo",
                    PlayerChangeRate: "Player.changeRate",
                    PlayerChangeSrc: "Player.changeSrc",
                    PlayerPlaying: "Player.playing",
                    PlayerTimeUpdate: "Player.timeUpdate",
                    PlayerbufferUpdate: "Player.bufferupdate",
                    PlayerResetReady: "Player.resetReady",
                    PlayerWait: "Player.wait",
                    PlayerLoadNext: "Player.loadNext",
                    PlayerOnPlay: "Player.onPlay",
                    PlayerOnPause: "Player.onPause",
                    PlayerOnSeek: "Player.onSeek",
                    PlayerOnVolume: "Player.onVolume",
                    PlayerReady: "Player.ready",
                    PlayerPlayReady: "Player.playReady",
                    PlayerRatechange: "Player.ratechange",
                    PlayerPlay: "Player.play",
                    PlayerReset: "Player.reset",
                    PlayerLoadedMetaData: "Player.loadedMetaData",
                    PlayerEnd: "Player.end",
                    PlayerPause: "Player.pause",
                    PlayerSeeking: "Player.seeking",
                    PlayerSeekStart: "Player.seekStart",
                    Volumechange: "player.Volumechange",
                    PlayerAlert: "Player.alert",
                    PlayerThrowError: "Player.throwError",
                    StreamDataReady: "StreamController.dataReady"
                }, pe = null, ye = function (e) {
                    if ("number" == typeof e) {
                        for (var t = [], n = 0; n < e; n++)
                            t.push(0);
                        return t
                    }
                    for (n = 0; n < e.length; n++)
                        if (e[n] < 0 || e[n] >= 256 || "number" != typeof e[n])
                            throw new Error("invalid byte (" + e[n] + ":" + n + ")");
                    if (e.slice)
                        return e.slice(0);
                    for (t = [],
                             n = 0; n < e.length; n++)
                        t.push(e[n]);
                    return t
                };
                pe = ye,
                    le = function (e, t, n, r, i) {
                        null == n && (n = 0),
                        null == r && (r = 0),
                        null == i && (i = e.length);
                        for (var a = r; a < i; a++)
                            t[n++] = e[a]
                    }
                    ,
                    he = function (e, t) {
                        if (null == t || "utf8" == t.toLowerCase().replace(/ |-/g, "")) {
                            var n = []
                                , r = 0;
                            for (e = encodeURI(e); r < e.length;) {
                                var i = e.charCodeAt(r++);
                                37 === i ? (n.push(parseInt(e.substr(r, 2), 16)),
                                    r += 2) : n.push(i)
                            }
                            return n
                        }
                        if ("hex" == t.toLowerCase()) {
                            for (n = [],
                                     r = 0; r < e.length; r += 2)
                                n.push(parseInt(e.substr(r, 2), 16));
                            return n
                        }
                        return null
                    }
                ;
                var ve = "0123456789abcdef";
                ce = function (e, t) {
                    if (null == t || "utf8" == t.toLowerCase().replace(/ |-/g, "")) {
                        for (var n = [], r = 0; r < e.length;) {
                            var i = e[r];
                            i < 128 ? (n.push(String.fromCharCode(i)),
                                r++) : i > 191 && i < 224 ? (n.push(String.fromCharCode((31 & i) << 6 | 63 & e[r + 1])),
                                r += 2) : (n.push(String.fromCharCode((15 & i) << 12 | (63 & e[r + 1]) << 6 | 63 & e[r + 2])),
                                r += 3)
                        }
                        return n.join("")
                    }
                    if ("hex" == t.toLowerCase()) {
                        for (n = [],
                                 r = 0; r < e.length; r++) {
                            var a = e[r];
                            n.push(ve[(240 & a) >> 4] + ve[15 & a])
                        }
                        return n.join("")
                    }
                    return n
                }
                ;
                var ge = {
                        16: 10,
                        24: 12,
                        32: 14
                    }
                    ,
                    me = [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145]
                    ,
                    be = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22]
                    ,
                    ke = [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125]
                    ,
                    xe = [3328402341, 4168907908, 4000806809, 4135287693, 4294111757, 3597364157, 3731845041, 2445657428, 1613770832, 33620227, 3462883241, 1445669757, 3892248089, 3050821474, 1303096294, 3967186586, 2412431941, 528646813, 2311702848, 4202528135, 4026202645, 2992200171, 2387036105, 4226871307, 1101901292, 3017069671, 1604494077, 1169141738, 597466303, 1403299063, 3832705686, 2613100635, 1974974402, 3791519004, 1033081774, 1277568618, 1815492186, 2118074177, 4126668546, 2211236943, 1748251740, 1369810420, 3521504564, 4193382664, 3799085459, 2883115123, 1647391059, 706024767, 134480908, 2512897874, 1176707941, 2646852446, 806885416, 932615841, 168101135, 798661301, 235341577, 605164086, 461406363, 3756188221, 3454790438, 1311188841, 2142417613, 3933566367, 302582043, 495158174, 1479289972, 874125870, 907746093, 3698224818, 3025820398, 1537253627, 2756858614, 1983593293, 3084310113, 2108928974, 1378429307, 3722699582, 1580150641, 327451799, 2790478837, 3117535592, 0, 3253595436, 1075847264, 3825007647, 2041688520, 3059440621, 3563743934, 2378943302, 1740553945, 1916352843, 2487896798, 2555137236, 2958579944, 2244988746, 3151024235, 3320835882, 1336584933, 3992714006, 2252555205, 2588757463, 1714631509, 293963156, 2319795663, 3925473552, 67240454, 4269768577, 2689618160, 2017213508, 631218106, 1269344483, 2723238387, 1571005438, 2151694528, 93294474, 1066570413, 563977660, 1882732616, 4059428100, 1673313503, 2008463041, 2950355573, 1109467491, 537923632, 3858759450, 4260623118, 3218264685, 2177748300, 403442708, 638784309, 3287084079, 3193921505, 899127202, 2286175436, 773265209, 2479146071, 1437050866, 4236148354, 2050833735, 3362022572, 3126681063, 840505643, 3866325909, 3227541664, 427917720, 2655997905, 2749160575, 1143087718, 1412049534, 999329963, 193497219, 2353415882, 3354324521, 1807268051, 672404540, 2816401017, 3160301282, 369822493, 2916866934, 3688947771, 1681011286, 1949973070, 336202270, 2454276571, 201721354, 1210328172, 3093060836, 2680341085, 3184776046, 1135389935, 3294782118, 965841320, 831886756, 3554993207, 4068047243, 3588745010, 2345191491, 1849112409, 3664604599, 26054028, 2983581028, 2622377682, 1235855840, 3630984372, 2891339514, 4092916743, 3488279077, 3395642799, 4101667470, 1202630377, 268961816, 1874508501, 4034427016, 1243948399, 1546530418, 941366308, 1470539505, 1941222599, 2546386513, 3421038627, 2715671932, 3899946140, 1042226977, 2521517021, 1639824860, 227249030, 260737669, 3765465232, 2084453954, 1907733956, 3429263018, 2420656344, 100860677, 4160157185, 470683154, 3261161891, 1781871967, 2924959737, 1773779408, 394692241, 2579611992, 974986535, 664706745, 3655459128, 3958962195, 731420851, 571543859, 3530123707, 2849626480, 126783113, 865375399, 765172662, 1008606754, 361203602, 3387549984, 2278477385, 2857719295, 1344809080, 2782912378, 59542671, 1503764984, 160008576, 437062935, 1707065306, 3622233649, 2218934982, 3496503480, 2185314755, 697932208, 1512910199, 504303377, 2075177163, 2824099068, 1841019862, 739644986]
                    ,
                    Pe = [2781242211, 2230877308, 2582542199, 2381740923, 234877682, 3184946027, 2984144751, 1418839493, 1348481072, 50462977, 2848876391, 2102799147, 434634494, 1656084439, 3863849899, 2599188086, 1167051466, 2636087938, 1082771913, 2281340285, 368048890, 3954334041, 3381544775, 201060592, 3963727277, 1739838676, 4250903202, 3930435503, 3206782108, 4149453988, 2531553906, 1536934080, 3262494647, 484572669, 2923271059, 1783375398, 1517041206, 1098792767, 49674231, 1334037708, 1550332980, 4098991525, 886171109, 150598129, 2481090929, 1940642008, 1398944049, 1059722517, 201851908, 1385547719, 1699095331, 1587397571, 674240536, 2704774806, 252314885, 3039795866, 151914247, 908333586, 2602270848, 1038082786, 651029483, 1766729511, 3447698098, 2682942837, 454166793, 2652734339, 1951935532, 775166490, 758520603, 3000790638, 4004797018, 4217086112, 4137964114, 1299594043, 1639438038, 3464344499, 2068982057, 1054729187, 1901997871, 2534638724, 4121318227, 1757008337, 0, 750906861, 1614815264, 535035132, 3363418545, 3988151131, 3201591914, 1183697867, 3647454910, 1265776953, 3734260298, 3566750796, 3903871064, 1250283471, 1807470800, 717615087, 3847203498, 384695291, 3313910595, 3617213773, 1432761139, 2484176261, 3481945413, 283769337, 100925954, 2180939647, 4037038160, 1148730428, 3123027871, 3813386408, 4087501137, 4267549603, 3229630528, 2315620239, 2906624658, 3156319645, 1215313976, 82966005, 3747855548, 3245848246, 1974459098, 1665278241, 807407632, 451280895, 251524083, 1841287890, 1283575245, 337120268, 891687699, 801369324, 3787349855, 2721421207, 3431482436, 959321879, 1469301956, 4065699751, 2197585534, 1199193405, 2898814052, 3887750493, 724703513, 2514908019, 2696962144, 2551808385, 3516813135, 2141445340, 1715741218, 2119445034, 2872807568, 2198571144, 3398190662, 700968686, 3547052216, 1009259540, 2041044702, 3803995742, 487983883, 1991105499, 1004265696, 1449407026, 1316239930, 504629770, 3683797321, 168560134, 1816667172, 3837287516, 1570751170, 1857934291, 4014189740, 2797888098, 2822345105, 2754712981, 936633572, 2347923833, 852879335, 1133234376, 1500395319, 3084545389, 2348912013, 1689376213, 3533459022, 3762923945, 3034082412, 4205598294, 133428468, 634383082, 2949277029, 2398386810, 3913789102, 403703816, 3580869306, 2297460856, 1867130149, 1918643758, 607656988, 4049053350, 3346248884, 1368901318, 600565992, 2090982877, 2632479860, 557719327, 3717614411, 3697393085, 2249034635, 2232388234, 2430627952, 1115438654, 3295786421, 2865522278, 3633334344, 84280067, 33027830, 303828494, 2747425121, 1600795957, 4188952407, 3496589753, 2434238086, 1486471617, 658119965, 3106381470, 953803233, 334231800, 3005978776, 857870609, 3151128937, 1890179545, 2298973838, 2805175444, 3056442267, 574365214, 2450884487, 550103529, 1233637070, 4289353045, 2018519080, 2057691103, 2399374476, 4166623649, 2148108681, 387583245, 3664101311, 836232934, 3330556482, 3100665960, 3280093505, 2955516313, 2002398509, 287182607, 3413881008, 4238890068, 3597515707, 975967766]
                    ,
                    we = [1671808611, 2089089148, 2006576759, 2072901243, 4061003762, 1807603307, 1873927791, 3310653893, 810573872, 16974337, 1739181671, 729634347, 4263110654, 3613570519, 2883997099, 1989864566, 3393556426, 2191335298, 3376449993, 2106063485, 4195741690, 1508618841, 1204391495, 4027317232, 2917941677, 3563566036, 2734514082, 2951366063, 2629772188, 2767672228, 1922491506, 3227229120, 3082974647, 4246528509, 2477669779, 644500518, 911895606, 1061256767, 4144166391, 3427763148, 878471220, 2784252325, 3845444069, 4043897329, 1905517169, 3631459288, 827548209, 356461077, 67897348, 3344078279, 593839651, 3277757891, 405286936, 2527147926, 84871685, 2595565466, 118033927, 305538066, 2157648768, 3795705826, 3945188843, 661212711, 2999812018, 1973414517, 152769033, 2208177539, 745822252, 439235610, 455947803, 1857215598, 1525593178, 2700827552, 1391895634, 994932283, 3596728278, 3016654259, 695947817, 3812548067, 795958831, 2224493444, 1408607827, 3513301457, 0, 3979133421, 543178784, 4229948412, 2982705585, 1542305371, 1790891114, 3410398667, 3201918910, 961245753, 1256100938, 1289001036, 1491644504, 3477767631, 3496721360, 4012557807, 2867154858, 4212583931, 1137018435, 1305975373, 861234739, 2241073541, 1171229253, 4178635257, 33948674, 2139225727, 1357946960, 1011120188, 2679776671, 2833468328, 1374921297, 2751356323, 1086357568, 2408187279, 2460827538, 2646352285, 944271416, 4110742005, 3168756668, 3066132406, 3665145818, 560153121, 271589392, 4279952895, 4077846003, 3530407890, 3444343245, 202643468, 322250259, 3962553324, 1608629855, 2543990167, 1154254916, 389623319, 3294073796, 2817676711, 2122513534, 1028094525, 1689045092, 1575467613, 422261273, 1939203699, 1621147744, 2174228865, 1339137615, 3699352540, 577127458, 712922154, 2427141008, 2290289544, 1187679302, 3995715566, 3100863416, 339486740, 3732514782, 1591917662, 186455563, 3681988059, 3762019296, 844522546, 978220090, 169743370, 1239126601, 101321734, 611076132, 1558493276, 3260915650, 3547250131, 2901361580, 1655096418, 2443721105, 2510565781, 3828863972, 2039214713, 3878868455, 3359869896, 928607799, 1840765549, 2374762893, 3580146133, 1322425422, 2850048425, 1823791212, 1459268694, 4094161908, 3928346602, 1706019429, 2056189050, 2934523822, 135794696, 3134549946, 2022240376, 628050469, 779246638, 472135708, 2800834470, 3032970164, 3327236038, 3894660072, 3715932637, 1956440180, 522272287, 1272813131, 3185336765, 2340818315, 2323976074, 1888542832, 1044544574, 3049550261, 1722469478, 1222152264, 50660867, 4127324150, 236067854, 1638122081, 895445557, 1475980887, 3117443513, 2257655686, 3243809217, 489110045, 2662934430, 3778599393, 4162055160, 2561878936, 288563729, 1773916777, 3648039385, 2391345038, 2493985684, 2612407707, 505560094, 2274497927, 3911240169, 3460925390, 1442818645, 678973480, 3749357023, 2358182796, 2717407649, 2306869641, 219617805, 3218761151, 3862026214, 1120306242, 1756942440, 1103331905, 2578459033, 762796589, 252780047, 2966125488, 1425844308, 3151392187, 372911126]
                    ,
                    _e = [1667474886, 2088535288, 2004326894, 2071694838, 4075949567, 1802223062, 1869591006, 3318043793, 808472672, 16843522, 1734846926, 724270422, 4278065639, 3621216949, 2880169549, 1987484396, 3402253711, 2189597983, 3385409673, 2105378810, 4210693615, 1499065266, 1195886990, 4042263547, 2913856577, 3570689971, 2728590687, 2947541573, 2627518243, 2762274643, 1920112356, 3233831835, 3082273397, 4261223649, 2475929149, 640051788, 909531756, 1061110142, 4160160501, 3435941763, 875846760, 2779116625, 3857003729, 4059105529, 1903268834, 3638064043, 825316194, 353713962, 67374088, 3351728789, 589522246, 3284360861, 404236336, 2526454071, 84217610, 2593830191, 117901582, 303183396, 2155911963, 3806477791, 3958056653, 656894286, 2998062463, 1970642922, 151591698, 2206440989, 741110872, 437923380, 454765878, 1852748508, 1515908788, 2694904667, 1381168804, 993742198, 3604373943, 3014905469, 690584402, 3823320797, 791638366, 2223281939, 1398011302, 3520161977, 0, 3991743681, 538992704, 4244381667, 2981218425, 1532751286, 1785380564, 3419096717, 3200178535, 960056178, 1246420628, 1280103576, 1482221744, 3486468741, 3503319995, 4025428677, 2863326543, 4227536621, 1128514950, 1296947098, 859002214, 2240123921, 1162203018, 4193849577, 33687044, 2139062782, 1347481760, 1010582648, 2678045221, 2829640523, 1364325282, 2745433693, 1077985408, 2408548869, 2459086143, 2644360225, 943212656, 4126475505, 3166494563, 3065430391, 3671750063, 555836226, 269496352, 4294908645, 4092792573, 3537006015, 3452783745, 202118168, 320025894, 3974901699, 1600119230, 2543297077, 1145359496, 387397934, 3301201811, 2812801621, 2122220284, 1027426170, 1684319432, 1566435258, 421079858, 1936954854, 1616945344, 2172753945, 1330631070, 3705438115, 572679748, 707427924, 2425400123, 2290647819, 1179044492, 4008585671, 3099120491, 336870440, 3739122087, 1583276732, 185277718, 3688593069, 3772791771, 842159716, 976899700, 168435220, 1229577106, 101059084, 606366792, 1549591736, 3267517855, 3553849021, 2897014595, 1650632388, 2442242105, 2509612081, 3840161747, 2038008818, 3890688725, 3368567691, 926374254, 1835907034, 2374863873, 3587531953, 1313788572, 2846482505, 1819063512, 1448540844, 4109633523, 3941213647, 1701162954, 2054852340, 2930698567, 134748176, 3132806511, 2021165296, 623210314, 774795868, 471606328, 2795958615, 3031746419, 3334885783, 3907527627, 3722280097, 1953799400, 522133822, 1263263126, 3183336545, 2341176845, 2324333839, 1886425312, 1044267644, 3048588401, 1718004428, 1212733584, 50529542, 4143317495, 235803164, 1633788866, 892690282, 1465383342, 3115962473, 2256965911, 3250673817, 488449850, 2661202215, 3789633753, 4177007595, 2560144171, 286339874, 1768537042, 3654906025, 2391705863, 2492770099, 2610673197, 505291324, 2273808917, 3924369609, 3469625735, 1431699370, 673740880, 3755965093, 2358021891, 2711746649, 2307489801, 218961690, 3217021541, 3873845719, 1111672452, 1751693520, 1094828930, 2576986153, 757954394, 252645662, 2964376443, 1414855848, 3149649517, 370555436]
                    ,
                    Be = [1374988112, 2118214995, 437757123, 975658646, 1001089995, 530400753, 2902087851, 1273168787, 540080725, 2910219766, 2295101073, 4110568485, 1340463100, 3307916247, 641025152, 3043140495, 3736164937, 632953703, 1172967064, 1576976609, 3274667266, 2169303058, 2370213795, 1809054150, 59727847, 361929877, 3211623147, 2505202138, 3569255213, 1484005843, 1239443753, 2395588676, 1975683434, 4102977912, 2572697195, 666464733, 3202437046, 4035489047, 3374361702, 2110667444, 1675577880, 3843699074, 2538681184, 1649639237, 2976151520, 3144396420, 4269907996, 4178062228, 1883793496, 2403728665, 2497604743, 1383856311, 2876494627, 1917518562, 3810496343, 1716890410, 3001755655, 800440835, 2261089178, 3543599269, 807962610, 599762354, 33778362, 3977675356, 2328828971, 2809771154, 4077384432, 1315562145, 1708848333, 101039829, 3509871135, 3299278474, 875451293, 2733856160, 92987698, 2767645557, 193195065, 1080094634, 1584504582, 3178106961, 1042385657, 2531067453, 3711829422, 1306967366, 2438237621, 1908694277, 67556463, 1615861247, 429456164, 3602770327, 2302690252, 1742315127, 2968011453, 126454664, 3877198648, 2043211483, 2709260871, 2084704233, 4169408201, 0, 159417987, 841739592, 504459436, 1817866830, 4245618683, 260388950, 1034867998, 908933415, 168810852, 1750902305, 2606453969, 607530554, 202008497, 2472011535, 3035535058, 463180190, 2160117071, 1641816226, 1517767529, 470948374, 3801332234, 3231722213, 1008918595, 303765277, 235474187, 4069246893, 766945465, 337553864, 1475418501, 2943682380, 4003061179, 2743034109, 4144047775, 1551037884, 1147550661, 1543208500, 2336434550, 3408119516, 3069049960, 3102011747, 3610369226, 1113818384, 328671808, 2227573024, 2236228733, 3535486456, 2935566865, 3341394285, 496906059, 3702665459, 226906860, 2009195472, 733156972, 2842737049, 294930682, 1206477858, 2835123396, 2700099354, 1451044056, 573804783, 2269728455, 3644379585, 2362090238, 2564033334, 2801107407, 2776292904, 3669462566, 1068351396, 742039012, 1350078989, 1784663195, 1417561698, 4136440770, 2430122216, 775550814, 2193862645, 2673705150, 1775276924, 1876241833, 3475313331, 3366754619, 270040487, 3902563182, 3678124923, 3441850377, 1851332852, 3969562369, 2203032232, 3868552805, 2868897406, 566021896, 4011190502, 3135740889, 1248802510, 3936291284, 699432150, 832877231, 708780849, 3332740144, 899835584, 1951317047, 4236429990, 3767586992, 866637845, 4043610186, 1106041591, 2144161806, 395441711, 1984812685, 1139781709, 3433712980, 3835036895, 2664543715, 1282050075, 3240894392, 1181045119, 2640243204, 25965917, 4203181171, 4211818798, 3009879386, 2463879762, 3910161971, 1842759443, 2597806476, 933301370, 1509430414, 3943906441, 3467192302, 3076639029, 3776767469, 2051518780, 2631065433, 1441952575, 404016761, 1942435775, 1408749034, 1610459739, 3745345300, 2017778566, 3400528769, 3110650942, 941896748, 3265478751, 371049330, 3168937228, 675039627, 4279080257, 967311729, 135050206, 3635733660, 1683407248, 2076935265, 3576870512, 1215061108, 3501741890]
                    ,
                    Te = [1347548327, 1400783205, 3273267108, 2520393566, 3409685355, 4045380933, 2880240216, 2471224067, 1428173050, 4138563181, 2441661558, 636813900, 4233094615, 3620022987, 2149987652, 2411029155, 1239331162, 1730525723, 2554718734, 3781033664, 46346101, 310463728, 2743944855, 3328955385, 3875770207, 2501218972, 3955191162, 3667219033, 768917123, 3545789473, 692707433, 1150208456, 1786102409, 2029293177, 1805211710, 3710368113, 3065962831, 401639597, 1724457132, 3028143674, 409198410, 2196052529, 1620529459, 1164071807, 3769721975, 2226875310, 486441376, 2499348523, 1483753576, 428819965, 2274680428, 3075636216, 598438867, 3799141122, 1474502543, 711349675, 129166120, 53458370, 2592523643, 2782082824, 4063242375, 2988687269, 3120694122, 1559041666, 730517276, 2460449204, 4042459122, 2706270690, 3446004468, 3573941694, 533804130, 2328143614, 2637442643, 2695033685, 839224033, 1973745387, 957055980, 2856345839, 106852767, 1371368976, 4181598602, 1033297158, 2933734917, 1179510461, 3046200461, 91341917, 1862534868, 4284502037, 605657339, 2547432937, 3431546947, 2003294622, 3182487618, 2282195339, 954669403, 3682191598, 1201765386, 3917234703, 3388507166, 0, 2198438022, 1211247597, 2887651696, 1315723890, 4227665663, 1443857720, 507358933, 657861945, 1678381017, 560487590, 3516619604, 975451694, 2970356327, 261314535, 3535072918, 2652609425, 1333838021, 2724322336, 1767536459, 370938394, 182621114, 3854606378, 1128014560, 487725847, 185469197, 2918353863, 3106780840, 3356761769, 2237133081, 1286567175, 3152976349, 4255350624, 2683765030, 3160175349, 3309594171, 878443390, 1988838185, 3704300486, 1756818940, 1673061617, 3403100636, 272786309, 1075025698, 545572369, 2105887268, 4174560061, 296679730, 1841768865, 1260232239, 4091327024, 3960309330, 3497509347, 1814803222, 2578018489, 4195456072, 575138148, 3299409036, 446754879, 3629546796, 4011996048, 3347532110, 3252238545, 4270639778, 915985419, 3483825537, 681933534, 651868046, 2755636671, 3828103837, 223377554, 2607439820, 1649704518, 3270937875, 3901806776, 1580087799, 4118987695, 3198115200, 2087309459, 2842678573, 3016697106, 1003007129, 2802849917, 1860738147, 2077965243, 164439672, 4100872472, 32283319, 2827177882, 1709610350, 2125135846, 136428751, 3874428392, 3652904859, 3460984630, 3572145929, 3593056380, 2939266226, 824852259, 818324884, 3224740454, 930369212, 2801566410, 2967507152, 355706840, 1257309336, 4148292826, 243256656, 790073846, 2373340630, 1296297904, 1422699085, 3756299780, 3818836405, 457992840, 3099667487, 2135319889, 77422314, 1560382517, 1945798516, 788204353, 1521706781, 1385356242, 870912086, 325965383, 2358957921, 2050466060, 2388260884, 2313884476, 4006521127, 901210569, 3990953189, 1014646705, 1503449823, 1062597235, 2031621326, 3212035895, 3931371469, 1533017514, 350174575, 2256028891, 2177544179, 1052338372, 741876788, 1606591296, 1914052035, 213705253, 2334669897, 1107234197, 1899603969, 3725069491, 2631447780, 2422494913, 1635502980, 1893020342, 1950903388, 1120974935]
                    ,
                    Ee = [2807058932, 1699970625, 2764249623, 1586903591, 1808481195, 1173430173, 1487645946, 59984867, 4199882800, 1844882806, 1989249228, 1277555970, 3623636965, 3419915562, 1149249077, 2744104290, 1514790577, 459744698, 244860394, 3235995134, 1963115311, 4027744588, 2544078150, 4190530515, 1608975247, 2627016082, 2062270317, 1507497298, 2200818878, 567498868, 1764313568, 3359936201, 2305455554, 2037970062, 1047239e3, 1910319033, 1337376481, 2904027272, 2892417312, 984907214, 1243112415, 830661914, 861968209, 2135253587, 2011214180, 2927934315, 2686254721, 731183368, 1750626376, 4246310725, 1820824798, 4172763771, 3542330227, 48394827, 2404901663, 2871682645, 671593195, 3254988725, 2073724613, 145085239, 2280796200, 2779915199, 1790575107, 2187128086, 472615631, 3029510009, 4075877127, 3802222185, 4107101658, 3201631749, 1646252340, 4270507174, 1402811438, 1436590835, 3778151818, 3950355702, 3963161475, 4020912224, 2667994737, 273792366, 2331590177, 104699613, 95345982, 3175501286, 2377486676, 1560637892, 3564045318, 369057872, 4213447064, 3919042237, 1137477952, 2658625497, 1119727848, 2340947849, 1530455833, 4007360968, 172466556, 266959938, 516552836, 0, 2256734592, 3980931627, 1890328081, 1917742170, 4294704398, 945164165, 3575528878, 958871085, 3647212047, 2787207260, 1423022939, 775562294, 1739656202, 3876557655, 2530391278, 2443058075, 3310321856, 547512796, 1265195639, 437656594, 3121275539, 719700128, 3762502690, 387781147, 218828297, 3350065803, 2830708150, 2848461854, 428169201, 122466165, 3720081049, 1627235199, 648017665, 4122762354, 1002783846, 2117360635, 695634755, 3336358691, 4234721005, 4049844452, 3704280881, 2232435299, 574624663, 287343814, 612205898, 1039717051, 840019705, 2708326185, 793451934, 821288114, 1391201670, 3822090177, 376187827, 3113855344, 1224348052, 1679968233, 2361698556, 1058709744, 752375421, 2431590963, 1321699145, 3519142200, 2734591178, 188127444, 2177869557, 3727205754, 2384911031, 3215212461, 2648976442, 2450346104, 3432737375, 1180849278, 331544205, 3102249176, 4150144569, 2952102595, 2159976285, 2474404304, 766078933, 313773861, 2570832044, 2108100632, 1668212892, 3145456443, 2013908262, 418672217, 3070356634, 2594734927, 1852171925, 3867060991, 3473416636, 3907448597, 2614737639, 919489135, 164948639, 2094410160, 2997825956, 590424639, 2486224549, 1723872674, 3157750862, 3399941250, 3501252752, 3625268135, 2555048196, 3673637356, 1343127501, 4130281361, 3599595085, 2957853679, 1297403050, 81781910, 3051593425, 2283490410, 532201772, 1367295589, 3926170974, 895287692, 1953757831, 1093597963, 492483431, 3528626907, 1446242576, 1192455638, 1636604631, 209336225, 344873464, 1015671571, 669961897, 3375740769, 3857572124, 2973530695, 3747192018, 1933530610, 3464042516, 935293895, 3454686199, 2858115069, 1863638845, 3683022916, 4085369519, 3292445032, 875313188, 1080017571, 3279033885, 621591778, 1233856572, 2504130317, 24197544, 3017672716, 3835484340, 3247465558, 2220981195, 3060847922, 1551124588, 1463996600]
                    ,
                    Se = [4104605777, 1097159550, 396673818, 660510266, 2875968315, 2638606623, 4200115116, 3808662347, 821712160, 1986918061, 3430322568, 38544885, 3856137295, 718002117, 893681702, 1654886325, 2975484382, 3122358053, 3926825029, 4274053469, 796197571, 1290801793, 1184342925, 3556361835, 2405426947, 2459735317, 1836772287, 1381620373, 3196267988, 1948373848, 3764988233, 3385345166, 3263785589, 2390325492, 1480485785, 3111247143, 3780097726, 2293045232, 548169417, 3459953789, 3746175075, 439452389, 1362321559, 1400849762, 1685577905, 1806599355, 2174754046, 137073913, 1214797936, 1174215055, 3731654548, 2079897426, 1943217067, 1258480242, 529487843, 1437280870, 3945269170, 3049390895, 3313212038, 923313619, 679998e3, 3215307299, 57326082, 377642221, 3474729866, 2041877159, 133361907, 1776460110, 3673476453, 96392454, 878845905, 2801699524, 777231668, 4082475170, 2330014213, 4142626212, 2213296395, 1626319424, 1906247262, 1846563261, 562755902, 3708173718, 1040559837, 3871163981, 1418573201, 3294430577, 114585348, 1343618912, 2566595609, 3186202582, 1078185097, 3651041127, 3896688048, 2307622919, 425408743, 3371096953, 2081048481, 1108339068, 2216610296, 0, 2156299017, 736970802, 292596766, 1517440620, 251657213, 2235061775, 2933202493, 758720310, 265905162, 1554391400, 1532285339, 908999204, 174567692, 1474760595, 4002861748, 2610011675, 3234156416, 3693126241, 2001430874, 303699484, 2478443234, 2687165888, 585122620, 454499602, 151849742, 2345119218, 3064510765, 514443284, 4044981591, 1963412655, 2581445614, 2137062819, 19308535, 1928707164, 1715193156, 4219352155, 1126790795, 600235211, 3992742070, 3841024952, 836553431, 1669664834, 2535604243, 3323011204, 1243905413, 3141400786, 4180808110, 698445255, 2653899549, 2989552604, 2253581325, 3252932727, 3004591147, 1891211689, 2487810577, 3915653703, 4237083816, 4030667424, 2100090966, 865136418, 1229899655, 953270745, 3399679628, 3557504664, 4118925222, 2061379749, 3079546586, 2915017791, 983426092, 2022837584, 1607244650, 2118541908, 2366882550, 3635996816, 972512814, 3283088770, 1568718495, 3499326569, 3576539503, 621982671, 2895723464, 410887952, 2623762152, 1002142683, 645401037, 1494807662, 2595684844, 1335535747, 2507040230, 4293295786, 3167684641, 367585007, 3885750714, 1865862730, 2668221674, 2960971305, 2763173681, 1059270954, 2777952454, 2724642869, 1320957812, 2194319100, 2429595872, 2815956275, 77089521, 3973773121, 3444575871, 2448830231, 1305906550, 4021308739, 2857194700, 2516901860, 3518358430, 1787304780, 740276417, 1699839814, 1592394909, 2352307457, 2272556026, 188821243, 1729977011, 3687994002, 274084841, 3594982253, 3613494426, 2701949495, 4162096729, 322734571, 2837966542, 1640576439, 484830689, 1202797690, 3537852828, 4067639125, 349075736, 3342319475, 4157467219, 4255800159, 1030690015, 1155237496, 2951971274, 1757691577, 607398968, 2738905026, 499347990, 3794078908, 1011452712, 227885567, 2818666809, 213114376, 3034881240, 1455525988, 3414450555, 850817237, 1817998408, 3092726480]
                    ,
                    Ce = [0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, 708780849, 1883793496, 2118214995, 1817866830, 1649639237, 1215061108, 1181045119, 1417561698, 1517767529, 3767586992, 4003061179, 4236429990, 4069246893, 3635733660, 3602770327, 3299278474, 3400528769, 2430122216, 2664543715, 2362090238, 2193862645, 2835123396, 2801107407, 3035535058, 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343, 3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, 3110650942, 2472011535, 2640243204, 2403728665, 2169303058, 1001089995, 899835584, 666464733, 699432150, 59727847, 226906860, 530400753, 294930682, 1273168787, 1172967064, 1475418501, 1509430414, 1942435775, 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, 2976151520, 3211623147, 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, 3543599269, 3240894392, 3475313331, 3843699074, 3943906441, 4178062228, 4144047775, 1306967366, 1139781709, 1374988112, 1610459739, 1975683434, 2076935265, 1775276924, 1742315127, 1034867998, 866637845, 566021896, 800440835, 92987698, 193195065, 429456164, 395441711, 1984812685, 2017778566, 1784663195, 1683407248, 1315562145, 1080094634, 1383856311, 1551037884, 101039829, 135050206, 437757123, 337553864, 1042385657, 807962610, 573804783, 742039012, 2531067453, 2564033334, 2328828971, 2227573024, 2935566865, 2700099354, 3001755655, 3168937228, 3868552805, 3902563182, 4203181171, 4102977912, 3736164937, 3501741890, 3265478751, 3433712980, 1106041591, 1340463100, 1576976609, 1408749034, 2043211483, 2009195472, 1708848333, 1809054150, 832877231, 1068351396, 766945465, 599762354, 159417987, 126454664, 361929877, 463180190, 2709260871, 2943682380, 3178106961, 3009879386, 2572697195, 2538681184, 2236228733, 2336434550, 3509871135, 3745345300, 3441850377, 3274667266, 3910161971, 3877198648, 4110568485, 4211818798, 2597806476, 2497604743, 2261089178, 2295101073, 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, 3835036895, 4136440770, 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, 2051518780, 1951317047, 1716890410, 1750902305, 1113818384, 1282050075, 1584504582, 1350078989, 168810852, 67556463, 371049330, 404016761, 841739592, 1008918595, 775550814, 540080725, 3969562369, 3801332234, 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, 3332740144, 2631065433, 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, 3102011747, 3069049960, 202008497, 33778362, 270040487, 504459436, 875451293, 975658646, 675039627, 641025152, 2084704233, 1917518562, 1615861247, 1851332852, 1147550661, 1248802510, 1484005843, 1451044056, 933301370, 967311729, 733156972, 632953703, 260388950, 25965917, 328671808, 496906059, 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, 1908694277, 1675577880, 1842759443, 3610369226, 3644379585, 3408119516, 3307916247, 4011190502, 3776767469, 4077384432, 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, 2673705150, 2438237621, 2203032232, 2370213795]
                    ,
                    Re = [0, 185469197, 370938394, 487725847, 741876788, 657861945, 975451694, 824852259, 1483753576, 1400783205, 1315723890, 1164071807, 1950903388, 2135319889, 1649704518, 1767536459, 2967507152, 3152976349, 2801566410, 2918353863, 2631447780, 2547432937, 2328143614, 2177544179, 3901806776, 3818836405, 4270639778, 4118987695, 3299409036, 3483825537, 3535072918, 3652904859, 2077965243, 1893020342, 1841768865, 1724457132, 1474502543, 1559041666, 1107234197, 1257309336, 598438867, 681933534, 901210569, 1052338372, 261314535, 77422314, 428819965, 310463728, 3409685355, 3224740454, 3710368113, 3593056380, 3875770207, 3960309330, 4045380933, 4195456072, 2471224067, 2554718734, 2237133081, 2388260884, 3212035895, 3028143674, 2842678573, 2724322336, 4138563181, 4255350624, 3769721975, 3955191162, 3667219033, 3516619604, 3431546947, 3347532110, 2933734917, 2782082824, 3099667487, 3016697106, 2196052529, 2313884476, 2499348523, 2683765030, 1179510461, 1296297904, 1347548327, 1533017514, 1786102409, 1635502980, 2087309459, 2003294622, 507358933, 355706840, 136428751, 53458370, 839224033, 957055980, 605657339, 790073846, 2373340630, 2256028891, 2607439820, 2422494913, 2706270690, 2856345839, 3075636216, 3160175349, 3573941694, 3725069491, 3273267108, 3356761769, 4181598602, 4063242375, 4011996048, 3828103837, 1033297158, 915985419, 730517276, 545572369, 296679730, 446754879, 129166120, 213705253, 1709610350, 1860738147, 1945798516, 2029293177, 1239331162, 1120974935, 1606591296, 1422699085, 4148292826, 4233094615, 3781033664, 3931371469, 3682191598, 3497509347, 3446004468, 3328955385, 2939266226, 2755636671, 3106780840, 2988687269, 2198438022, 2282195339, 2501218972, 2652609425, 1201765386, 1286567175, 1371368976, 1521706781, 1805211710, 1620529459, 2105887268, 1988838185, 533804130, 350174575, 164439672, 46346101, 870912086, 954669403, 636813900, 788204353, 2358957921, 2274680428, 2592523643, 2441661558, 2695033685, 2880240216, 3065962831, 3182487618, 3572145929, 3756299780, 3270937875, 3388507166, 4174560061, 4091327024, 4006521127, 3854606378, 1014646705, 930369212, 711349675, 560487590, 272786309, 457992840, 106852767, 223377554, 1678381017, 1862534868, 1914052035, 2031621326, 1211247597, 1128014560, 1580087799, 1428173050, 32283319, 182621114, 401639597, 486441376, 768917123, 651868046, 1003007129, 818324884, 1503449823, 1385356242, 1333838021, 1150208456, 1973745387, 2125135846, 1673061617, 1756818940, 2970356327, 3120694122, 2802849917, 2887651696, 2637442643, 2520393566, 2334669897, 2149987652, 3917234703, 3799141122, 4284502037, 4100872472, 3309594171, 3460984630, 3545789473, 3629546796, 2050466060, 1899603969, 1814803222, 1730525723, 1443857720, 1560382517, 1075025698, 1260232239, 575138148, 692707433, 878443390, 1062597235, 243256656, 91341917, 409198410, 325965383, 3403100636, 3252238545, 3704300486, 3620022987, 3874428392, 3990953189, 4042459122, 4227665663, 2460449204, 2578018489, 2226875310, 2411029155, 3198115200, 3046200461, 2827177882, 2743944855]
                    ,
                    Le = [0, 218828297, 437656594, 387781147, 875313188, 958871085, 775562294, 590424639, 1750626376, 1699970625, 1917742170, 2135253587, 1551124588, 1367295589, 1180849278, 1265195639, 3501252752, 3720081049, 3399941250, 3350065803, 3835484340, 3919042237, 4270507174, 4085369519, 3102249176, 3051593425, 2734591178, 2952102595, 2361698556, 2177869557, 2530391278, 2614737639, 3145456443, 3060847922, 2708326185, 2892417312, 2404901663, 2187128086, 2504130317, 2555048196, 3542330227, 3727205754, 3375740769, 3292445032, 3876557655, 3926170974, 4246310725, 4027744588, 1808481195, 1723872674, 1910319033, 2094410160, 1608975247, 1391201670, 1173430173, 1224348052, 59984867, 244860394, 428169201, 344873464, 935293895, 984907214, 766078933, 547512796, 1844882806, 1627235199, 2011214180, 2062270317, 1507497298, 1423022939, 1137477952, 1321699145, 95345982, 145085239, 532201772, 313773861, 830661914, 1015671571, 731183368, 648017665, 3175501286, 2957853679, 2807058932, 2858115069, 2305455554, 2220981195, 2474404304, 2658625497, 3575528878, 3625268135, 3473416636, 3254988725, 3778151818, 3963161475, 4213447064, 4130281361, 3599595085, 3683022916, 3432737375, 3247465558, 3802222185, 4020912224, 4172763771, 4122762354, 3201631749, 3017672716, 2764249623, 2848461854, 2331590177, 2280796200, 2431590963, 2648976442, 104699613, 188127444, 472615631, 287343814, 840019705, 1058709744, 671593195, 621591778, 1852171925, 1668212892, 1953757831, 2037970062, 1514790577, 1463996600, 1080017571, 1297403050, 3673637356, 3623636965, 3235995134, 3454686199, 4007360968, 3822090177, 4107101658, 4190530515, 2997825956, 3215212461, 2830708150, 2779915199, 2256734592, 2340947849, 2627016082, 2443058075, 172466556, 122466165, 273792366, 492483431, 1047239e3, 861968209, 612205898, 695634755, 1646252340, 1863638845, 2013908262, 1963115311, 1446242576, 1530455833, 1277555970, 1093597963, 1636604631, 1820824798, 2073724613, 1989249228, 1436590835, 1487645946, 1337376481, 1119727848, 164948639, 81781910, 331544205, 516552836, 1039717051, 821288114, 669961897, 719700128, 2973530695, 3157750862, 2871682645, 2787207260, 2232435299, 2283490410, 2667994737, 2450346104, 3647212047, 3564045318, 3279033885, 3464042516, 3980931627, 3762502690, 4150144569, 4199882800, 3070356634, 3121275539, 2904027272, 2686254721, 2200818878, 2384911031, 2570832044, 2486224549, 3747192018, 3528626907, 3310321856, 3359936201, 3950355702, 3867060991, 4049844452, 4234721005, 1739656202, 1790575107, 2108100632, 1890328081, 1402811438, 1586903591, 1233856572, 1149249077, 266959938, 48394827, 369057872, 418672217, 1002783846, 919489135, 567498868, 752375421, 209336225, 24197544, 376187827, 459744698, 945164165, 895287692, 574624663, 793451934, 1679968233, 1764313568, 2117360635, 1933530610, 1343127501, 1560637892, 1243112415, 1192455638, 3704280881, 3519142200, 3336358691, 3419915562, 3907448597, 3857572124, 4075877127, 4294704398, 3029510009, 3113855344, 2927934315, 2744104290, 2159976285, 2377486676, 2594734927, 2544078150]
                    ,
                    Ae = [0, 151849742, 303699484, 454499602, 607398968, 758720310, 908999204, 1059270954, 1214797936, 1097159550, 1517440620, 1400849762, 1817998408, 1699839814, 2118541908, 2001430874, 2429595872, 2581445614, 2194319100, 2345119218, 3034881240, 3186202582, 2801699524, 2951971274, 3635996816, 3518358430, 3399679628, 3283088770, 4237083816, 4118925222, 4002861748, 3885750714, 1002142683, 850817237, 698445255, 548169417, 529487843, 377642221, 227885567, 77089521, 1943217067, 2061379749, 1640576439, 1757691577, 1474760595, 1592394909, 1174215055, 1290801793, 2875968315, 2724642869, 3111247143, 2960971305, 2405426947, 2253581325, 2638606623, 2487810577, 3808662347, 3926825029, 4044981591, 4162096729, 3342319475, 3459953789, 3576539503, 3693126241, 1986918061, 2137062819, 1685577905, 1836772287, 1381620373, 1532285339, 1078185097, 1229899655, 1040559837, 923313619, 740276417, 621982671, 439452389, 322734571, 137073913, 19308535, 3871163981, 4021308739, 4104605777, 4255800159, 3263785589, 3414450555, 3499326569, 3651041127, 2933202493, 2815956275, 3167684641, 3049390895, 2330014213, 2213296395, 2566595609, 2448830231, 1305906550, 1155237496, 1607244650, 1455525988, 1776460110, 1626319424, 2079897426, 1928707164, 96392454, 213114376, 396673818, 514443284, 562755902, 679998e3, 865136418, 983426092, 3708173718, 3557504664, 3474729866, 3323011204, 4180808110, 4030667424, 3945269170, 3794078908, 2507040230, 2623762152, 2272556026, 2390325492, 2975484382, 3092726480, 2738905026, 2857194700, 3973773121, 3856137295, 4274053469, 4157467219, 3371096953, 3252932727, 3673476453, 3556361835, 2763173681, 2915017791, 3064510765, 3215307299, 2156299017, 2307622919, 2459735317, 2610011675, 2081048481, 1963412655, 1846563261, 1729977011, 1480485785, 1362321559, 1243905413, 1126790795, 878845905, 1030690015, 645401037, 796197571, 274084841, 425408743, 38544885, 188821243, 3613494426, 3731654548, 3313212038, 3430322568, 4082475170, 4200115116, 3780097726, 3896688048, 2668221674, 2516901860, 2366882550, 2216610296, 3141400786, 2989552604, 2837966542, 2687165888, 1202797690, 1320957812, 1437280870, 1554391400, 1669664834, 1787304780, 1906247262, 2022837584, 265905162, 114585348, 499347990, 349075736, 736970802, 585122620, 972512814, 821712160, 2595684844, 2478443234, 2293045232, 2174754046, 3196267988, 3079546586, 2895723464, 2777952454, 3537852828, 3687994002, 3234156416, 3385345166, 4142626212, 4293295786, 3841024952, 3992742070, 174567692, 57326082, 410887952, 292596766, 777231668, 660510266, 1011452712, 893681702, 1108339068, 1258480242, 1343618912, 1494807662, 1715193156, 1865862730, 1948373848, 2100090966, 2701949495, 2818666809, 3004591147, 3122358053, 2235061775, 2352307457, 2535604243, 2653899549, 3915653703, 3764988233, 4219352155, 4067639125, 3444575871, 3294430577, 3746175075, 3594982253, 836553431, 953270745, 600235211, 718002117, 367585007, 484830689, 133361907, 251657213, 2041877159, 1891211689, 1806599355, 1654886325, 1568718495, 1418573201, 1335535747, 1184342925];

                function De(e) {
                    for (var t = [], n = 0; n < e.length; n += 4)
                        t.push(e[n] << 24 | e[n + 1] << 16 | e[n + 2] << 8 | e[n + 3]);
                    return t
                }

                var Oe = function e(t) {
                    if (!(this instanceof e))
                        throw Error("AES must be instanitated with `new`");
                    this.key = pe(t),
                        this._prepare()
                };
                Oe.prototype._prepare = function () {
                    var e = ge[this.key.length];
                    if (null == e)
                        throw new Error("invalid key size (must be 16, 24 or 32 bytes)");
                    this._Ke = [],
                        this._Kd = [];
                    for (var t = 0; t <= e; t++)
                        this._Ke.push([0, 0, 0, 0]),
                            this._Kd.push([0, 0, 0, 0]);
                    var n, r = 4 * (e + 1), i = this.key.length / 4, a = De(this.key);
                    for (t = 0; t < i; t++)
                        n = t >> 2,
                            this._Ke[n][t % 4] = a[t],
                            this._Kd[e - n][t % 4] = a[t];
                    for (var o, s = 0, u = i; u < r;) {
                        if (o = a[i - 1],
                            a[0] ^= be[o >> 16 & 255] << 24 ^ be[o >> 8 & 255] << 16 ^ be[255 & o] << 8 ^ be[o >> 24 & 255] ^ me[s] << 24,
                            s += 1,
                        8 != i)
                            for (t = 1; t < i; t++)
                                a[t] ^= a[t - 1];
                        else {
                            for (t = 1; t < i / 2; t++)
                                a[t] ^= a[t - 1];
                            o = a[i / 2 - 1],
                                a[i / 2] ^= be[255 & o] ^ be[o >> 8 & 255] << 8 ^ be[o >> 16 & 255] << 16 ^ be[o >> 24 & 255] << 24;
                            for (t = i / 2 + 1; t < i; t++)
                                a[t] ^= a[t - 1]
                        }
                        for (t = 0; t < i && u < r;)
                            l = u >> 2,
                                c = u % 4,
                                this._Ke[l][c] = a[t],
                                this._Kd[e - l][c] = a[t++],
                                u++
                    }
                    for (var l = 1; l < e; l++)
                        for (var c = 0; c < 4; c++)
                            o = this._Kd[l][c],
                                this._Kd[l][c] = Ce[o >> 24 & 255] ^ Re[o >> 16 & 255] ^ Le[o >> 8 & 255] ^ Ae[255 & o]
                }
                    ,
                    Oe.prototype.encrypt = function (e) {
                        if (16 != e.length)
                            throw new Error("invalid plaintext size (must be 16 bytes)");
                        for (var t = this._Ke.length - 1, n = [0, 0, 0, 0], r = De(e), i = 0; i < 4; i++)
                            r[i] ^= this._Ke[0][i];
                        for (var a = 1; a < t; a++) {
                            for (i = 0; i < 4; i++)
                                n[i] = xe[r[i] >> 24 & 255] ^ Pe[r[(i + 1) % 4] >> 16 & 255] ^ we[r[(i + 2) % 4] >> 8 & 255] ^ _e[255 & r[(i + 3) % 4]] ^ this._Ke[a][i];
                            r = n.slice(0)
                        }
                        var o, s = pe(16);
                        for (i = 0; i < 4; i++)
                            o = this._Ke[t][i],
                                s[4 * i] = 255 & (be[r[i] >> 24 & 255] ^ o >> 24),
                                s[4 * i + 1] = 255 & (be[r[(i + 1) % 4] >> 16 & 255] ^ o >> 16),
                                s[4 * i + 2] = 255 & (be[r[(i + 2) % 4] >> 8 & 255] ^ o >> 8),
                                s[4 * i + 3] = 255 & (be[255 & r[(i + 3) % 4]] ^ o);
                        return s
                    }
                    ,
                    Oe.prototype.decrypt = function (e) {
                        if (16 != e.length)
                            throw new Error("invalid ciphertext size (must be 16 bytes)");
                        for (var t = this._Kd.length - 1, n = [0, 0, 0, 0], r = De(e), i = 0; i < 4; i++)
                            r[i] ^= this._Kd[0][i];
                        for (var a = 1; a < t; a++) {
                            for (i = 0; i < 4; i++)
                                n[i] = Be[r[i] >> 24 & 255] ^ Te[r[(i + 3) % 4] >> 16 & 255] ^ Ee[r[(i + 2) % 4] >> 8 & 255] ^ Se[255 & r[(i + 1) % 4]] ^ this._Kd[a][i];
                            r = n.slice(0)
                        }
                        var o, s = pe(16);
                        for (i = 0; i < 4; i++)
                            o = this._Kd[t][i],
                                s[4 * i] = 255 & (ke[r[i] >> 24 & 255] ^ o >> 24),
                                s[4 * i + 1] = 255 & (ke[r[(i + 3) % 4] >> 16 & 255] ^ o >> 16),
                                s[4 * i + 2] = 255 & (ke[r[(i + 2) % 4] >> 8 & 255] ^ o >> 8),
                                s[4 * i + 3] = 255 & (ke[255 & r[(i + 1) % 4]] ^ o);
                        return s
                    }
                ;
                var Me = function e(t) {
                    if (!(this instanceof e))
                        throw Error("AES must be instanitated with `new`");
                    this.description = "Electronic Code Block",
                        this.name = "ecb",
                        this._aes = new Oe(t)
                };
                Me.prototype.encrypt = function (e) {
                    if (e.length % 16 != 0)
                        throw new Error("invalid plaintext size (must be multiple of 16 bytes)");
                    for (var t = pe(e.length), n = pe(16), r = 0; r < e.length; r += 16)
                        le(e, n, 0, r, r + 16),
                            n = this._aes.encrypt(n),
                            le(n, t, r, 0, 16);
                    return t
                }
                    ,
                    Me.prototype.decrypt = function (e) {
                        if (e.length % 16 != 0)
                            throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");
                        for (var t = pe(e.length), n = pe(16), r = 0; r < e.length; r += 16)
                            le(e, n, 0, r, r + 16),
                                n = this._aes.decrypt(n),
                                le(n, t, r, 0, 16);
                        return t
                    }
                ;
                var Ie = function e(t, n) {
                    var r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
                    if (r || (n = new Uint8Array(n.map((function (e) {
                            return e / 2
                        }
                    )))),
                        !(this instanceof e))
                        throw Error("AES must be instanitated with `new`");
                    if (this.description = "Cipher Block Chaining",
                        this.name = "cbc",
                        n) {
                        if (16 != n.length)
                            throw new Error("invalid initialation vector size (must be 16 bytes)")
                    } else
                        n = pe([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
                    this._lastCipherblock = pe(n),
                        this._aes = new Oe(t)
                };
                Ie.prototype.encrypt = function (e) {
                    if (e.length % 16 != 0)
                        throw new Error("invalid plaintext size (must be multiple of 16 bytes)");
                    for (var t = pe(e.length), n = pe(16), r = 0; r < e.length; r += 16) {
                        le(e, n, 0, r, r + 16);
                        for (var i = 0; i < 16; i++)
                            n[i] ^= this._lastCipherblock[i];
                        this._lastCipherblock = this._aes.encrypt(n),
                            le(this._lastCipherblock, t, r, 0, 16)
                    }
                    return t
                }
                    ,
                    Ie.prototype.d = function (e) {
                        if (e.length % 16 != 0)
                            throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");
                        for (var t = pe(e.length), n = pe(16), r = 0; r < e.length; r += 16) {
                            le(e, n, 0, r, r + 16),
                                n = this._aes.decrypt(n);
                            for (var i = 0; i < 16; i++)
                                t[r + i] = n[i] ^ this._lastCipherblock[i];
                            le(e, this._lastCipherblock, 0, r, r + 16)
                        }
                        return t
                    }
                ;
                var Ne = function e(t, n, r) {
                    if (!(this instanceof e))
                        throw Error("AES must be instanitated with `new`");
                    if (this.description = "Cipher Feedback",
                        this.name = "cfb",
                        n) {
                        if (16 != n.length)
                            throw new Error("invalid initialation vector size (must be 16 size)")
                    } else
                        n = pe([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
                    r || (r = 1),
                        this.segmentSize = r,
                        this._shiftRegister = pe(n),
                        this._aes = new Oe(t)
                };
                Ne.prototype.encrypt = function (e) {
                    if (e.length % this.segmentSize != 0)
                        throw new Error("invalid plaintext size (must be segmentSize bytes)");
                    for (var t, n = pe(e), r = 0; r < n.length; r += this.segmentSize) {
                        t = this._aes.encrypt(this._shiftRegister);
                        for (var i = 0; i < this.segmentSize; i++)
                            n[r + i] ^= t[i];
                        le(this._shiftRegister, this._shiftRegister, 0, this.segmentSize),
                            le(n, this._shiftRegister, 16 - this.segmentSize, r, r + this.segmentSize)
                    }
                    return n
                }
                    ,
                    Ne.prototype.decrypt = function (e) {
                        if (e.length % this.segmentSize != 0)
                            throw new Error("invalid ciphertext size (must be segmentSize bytes)");
                        for (var t, n = pe(e), r = 0; r < n.length; r += this.segmentSize) {
                            t = this._aes.encrypt(this._shiftRegister);
                            for (var i = 0; i < this.segmentSize; i++)
                                n[r + i] ^= t[i];
                            le(this._shiftRegister, this._shiftRegister, 0, this.segmentSize),
                                le(e, this._shiftRegister, 16 - this.segmentSize, r, r + this.segmentSize)
                        }
                        return n
                    }
                ;
                var Ue = function e(t, n) {
                    if (!(this instanceof e))
                        throw Error("AES must be instanitated with `new`");
                    if (this.description = "Output Feedback",
                        this.name = "ofb",
                        n) {
                        if (16 != n.length)
                            throw new Error("invalid initialation vector size (must be 16 bytes)")
                    } else
                        n = pe([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
                    this._lastPrecipher = pe(n),
                        this._lastPrecipherIndex = 16,
                        this._aes = new Oe(t)
                };
                Ue.prototype.encrypt = function (e) {
                    for (var t = pe(e), n = 0; n < t.length; n++)
                        16 === this._lastPrecipherIndex && (this._lastPrecipher = this._aes.encrypt(this._lastPrecipher),
                            this._lastPrecipherIndex = 0),
                            t[n] ^= this._lastPrecipher[this._lastPrecipherIndex++];
                    return t
                }
                    ,
                    Ue.prototype.decrypt = Ue.prototype.encrypt;
                var Fe = function e(t) {
                    if (!(this instanceof e))
                        throw Error("Counter must be instanitated with `new`");
                    0 === t || t || (t = 1),
                        "number" == typeof t ? (this._counter = pe([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
                            this.setValue(t)) : this.setBytes(t)
                };
                Fe.prototype.setValue = function (e) {
                    if ("number" != typeof e || parseInt(e) != e)
                        throw new Error("invalid counter value (must be an integer)");
                    for (var t = 15; t >= 0; --t)
                        this._counter[t] = e % 256,
                            e >>= 8
                }
                    ,
                    Fe.prototype.setBytes = function (e) {
                        if (16 != e.length)
                            throw new Error("invalid counter bytes size (must be 16 bytes)");
                        this._counter = pe(e)
                    }
                    ,
                    Fe.prototype.increment = function () {
                        for (var e = 15; e >= 0; e--) {
                            if (255 !== this._counter[e]) {
                                this._counter[e]++;
                                break
                            }
                            this._counter[e] = 0
                        }
                    }
                ;
                var He = function e(t, n) {
                    if (!(this instanceof e))
                        throw Error("AES must be instanitated with `new`");
                    this.description = "Counter",
                        this.name = "ctr",
                    n instanceof Fe || (n = new Fe(n)),
                        this._counter = n,
                        this._remainingCounter = null,
                        this._remainingCounterIndex = 16,
                        this._aes = new Oe(t)
                };
                He.prototype.encrypt = function (e) {
                    for (var t = pe(e), n = 0; n < t.length; n++)
                        16 === this._remainingCounterIndex && (this._remainingCounter = this._aes.encrypt(this._counter._counter),
                            this._remainingCounterIndex = 0,
                            this._counter.increment()),
                            t[n] ^= this._remainingCounter[this._remainingCounterIndex++];
                    return t
                }
                    ,
                    He.prototype.decrypt = He.prototype.encrypt;
                var je = {
                    AES: Oe,
                    Counter: Fe,
                    m: {
                        ecb: Me,
                        c: Ie,
                        cfb: Ne,
                        ofb: Ue,
                        ctr: He
                    },
                    util: {
                        convertBytesToString: ce,
                        b: he,
                        _slowCreateBuffer: ye,
                        toBytes: function (e) {
                            for (var t = [], n = 0; n < e.length; n += 2)
                                t.push(parseInt(e.substr(n, 2), 16));
                            return t
                        }
                    }
                }
                    , ze = n(73);
                const We = "function" == typeof atob
                    , Ve = "function" == typeof Buffer
                    , Xe = ("function" == typeof TextDecoder && new TextDecoder,
                    "function" == typeof TextEncoder && new TextEncoder,
                        [..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="])
                    , Ye = (e => {
                            let t = {};
                            return e.forEach((e, n) => t[e] = n),
                                t
                        }
                    )(Xe)
                    , Ge = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/
                    , $e = String.fromCharCode.bind(String)
                    ,
                    Ke = "function" == typeof Uint8Array.from ? Uint8Array.from.bind(Uint8Array) : (e, t = (e => e)) => new Uint8Array(Array.prototype.slice.call(e, 0).map(t))
                    , qe = e => e.replace(/[^A-Za-z0-9\+\/]/g, "")
                    , Qe = e => {
                        if (e = e.replace(/\s+/g, ""),
                            !Ge.test(e))
                            throw new TypeError("malformed base64.");
                        e += "==".slice(2 - (3 & e.length));
                        let t, n, r, i = "";
                        for (let a = 0; a < e.length;)
                            t = Ye[e.charAt(a++)] << 18 | Ye[e.charAt(a++)] << 12 | (n = Ye[e.charAt(a++)]) << 6 | (r = Ye[e.charAt(a++)]),
                                i += 64 === n ? $e(t >> 16 & 255) : 64 === r ? $e(t >> 16 & 255, t >> 8 & 255) : $e(t >> 16 & 255, t >> 8 & 255, 255 & t);
                        return i
                    }
                    , Ze = We ? e => atob(qe(e)) : Ve ? e => Buffer.from(e, "base64").toString("binary") : Qe
                    , Je = Ve ? e => Ke(Buffer.from(e, "base64")) : e => Ke(Ze(e), e => e.charCodeAt(0))
                    , et = e => Je(tt(e))
                    , tt = e => qe(e.replace(/[-_]/g, e => "-" == e ? "+" : "/"))
                    , nt = et;

                function rt(e, t) {
                    var n;
                    try {
                        n = JSON.parse(e)
                    } catch (t) {
                        return e
                    }
                    return function (e, t) {
                        var n = je.util.b(ze("NTQ1ZjhmY2QtMzk3OS00NWZhLTkxNjktYzk3NTlhNDNhNTQ4#" + t).slice(1, 17))
                            , r = nt(e)
                            , i = new je.m.c(n, [1, 1, 2, 3, 5, 8, 13, 21, 34, 21, 13, 8, 5, 3, 2, 1], !0).d(r);
                        return je.util.convertBytesToString(i)
                    }(n.body, String(2 * t))
                }

                window.rt = rt

                function it(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                function at(e, t) {
                    var n = Object.keys(e);
                    if (Object.getOwnPropertySymbols) {
                        var r = Object.getOwnPropertySymbols(e);
                        t && (r = r.filter((function (t) {
                                return Object.getOwnPropertyDescriptor(e, t).enumerable
                            }
                        ))),
                            n.push.apply(n, r)
                    }
                    return n
                }

                function ot(e) {
                    for (var t = 1; t < arguments.length; t++) {
                        var n = null != arguments[t] ? arguments[t] : {};
                        t % 2 ? at(Object(n), !0).forEach((function (t) {
                                v()(e, t, n[t])
                            }
                        )) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : at(Object(n)).forEach((function (t) {
                                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
                            }
                        ))
                    }
                    return e
                }

                function st(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var ut = {
                    HLS: function (e) {
                        c()(n, e);
                        var t = it(n);

                        function n(e) {
                            var r;
                            return i()(this, n),
                                r = t.call(this),
                                v()(u()(r), "state", j.IDLE),
                                v()(u()(r), "maxBufferDuration", U.b.maxDuration),
                                v()(u()(r), "maxBufferSize", U.b.maxSize),
                                v()(u()(r), "baseUrl", ""),
                                v()(u()(r), "options", null),
                                v()(u()(r), "httpWorker", null),
                                v()(u()(r), "sourceData", null),
                                v()(u()(r), "segmentPool", []),
                                v()(u()(r), "currentNo", null),
                                v()(u()(r), "maxRetryCount", U.b.maxRetryCount),
                                v()(u()(r), "parsePlaylistCallback", null),
                                r.options = e,
                                r.loaderController = r.options.loaderController,
                                r.dataController = r.loaderController.dataController,
                                r.httpWorker = e.httpWorker,
                                r.setSegmentPool(new fe),
                                r
                        }

                        return o()(n, [{
                            key: "loadPlaylist",
                            value: function (e) {
                                var t = this;
                                this.httpWorker.postMessage({
                                    type: "invoke",
                                    fileType: "m3u8",
                                    method: "get",
                                    name: "playlist",
                                    url: this.sourceURL
                                }),
                                    this.httpWorker.onmessage = function (n) {
                                        var r = n.data
                                            , i = n.data.data;
                                        if (t.options.pdx && (i = rt(i, t.options.minSeekHole)),
                                            i)
                                            "playlist" == r.name ? t.parsePlaylist(i, e) : "key" == r.name && t.parsePlaylistCallback && t.parsePlaylistCallback(r.arrayBuffer);
                                        else {
                                            var a = "Get the ".concat(r.fileType, " file error. URL: ").concat(r.url);
                                            t.events.emit(de.PlayerAlert, a),
                                                t.events.emit(de.LoaderError, a, r);
                                            var o = [t.state, "request ".concat(r.name, " error.', 'data:"), r, a];
                                            t.events.emit(de.PlayerThrowError, o)
                                        }
                                    }
                            }
                        }, {
                            key: "parsePlaylist",
                            value: function (e, t) {
                                var n = this
                                    , r = new q(e);
                                if (r.segments && r.segments.length) {
                                    r.segments.forEach((function (e) {
                                            e.start = ee.msec2sec(e.start),
                                                e.end = ee.msec2sec(e.end),
                                                e.duration = ee.msec2sec(e.duration)
                                        }
                                    )),
                                        this.setSourceData(Object.freeze(r)),
                                        this.segmentPool.addAll(r.segments),
                                        r.keyAttrs ? this.loadKey(r.keyAttrs.URI, (function (e) {
                                                r.keyAttrs.key = e,
                                                    t.call(n, r)
                                            }
                                        )) : t.call(this, r)
                                } else {
                                    this.events.emit(de.LoaderError, r),
                                        this.events.emit(de.PlayerAlert, "Parse playlist file error.");
                                    var i = [this.state, "Parse playlist error.", "data:", r];
                                    this.events.emit(de.PlayerThrowError, i)
                                }
                            }
                        }, {
                            key: "loadKey",
                            value: function (e, t) {
                                var n = e
                                    , r = this.options.player.options.minSeekHole
                                    , i = this.options.player.pid
                                    , a = this.options.player.options.playsafe;
                                if (void 0 !== r && a) {
                                    var o = n.indexOf("/", 9);
                                    e = n.substring(0, ++o) + "playsafe/v12/" + n.slice(o) + "?token=" + a,
                                    i && (e = e + "&pid=" + i)
                                }
                                this.httpWorker.postMessage({
                                    type: "invoke",
                                    fileType: "key",
                                    method: "get",
                                    name: "key",
                                    url: e
                                }),
                                    this.parsePlaylistCallback = t
                            }
                        }, {
                            key: "setSourceData",
                            value: function (e) {
                                this.sourceData = e
                            }
                        }, {
                            key: "getSourceData",
                            value: function () {
                                return this.sourceData
                            }
                        }, {
                            key: "setSegmentPool",
                            value: function (e) {
                                this.segmentPool = e
                            }
                        }, {
                            key: "getSegmentPool",
                            value: function () {
                                return this.segmentPool
                            }
                        }, {
                            key: "isNotFree",
                            value: function () {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "";
                                return e = "[" + e + "]loader is not free. please wait.",
                                this.state !== j.IDLE && this.state !== j.DONE && (this.logger.warn("isNotFree", "check status for loader", "notice:", e),
                                    !0)
                            }
                        }, {
                            key: "getBaseUrl",
                            value: function (e) {
                                var t = this.options.sourceURL;
                                if (!(e.indexOf("//") > -1)) {
                                    var n = t.lastIndexOf("/");
                                    return t.substr(0, n + 1)
                                }
                                return ""
                            }
                        }, {
                            key: "checkLoadCondition",
                            value: function (e) {
                                return !(e.no > this.segmentPool.length) && (!(this.dataController.getLoadDataBufferPool().bufferDuration > this.maxBufferDuration) || (this.logger.info("checkLoadCondition", "stop load next segment.", "bufferDuration:", this.dataController.getLoadDataBufferPool().bufferDuration, "maxBufferDuration:", this.maxBufferDuration),
                                    !1))
                            }
                        }, {
                            key: "loadFile",
                            value: function (e, t, n) {
                                var r = this;
                                if (e instanceof se)
                                    if (this.isNotFree() && "seek" !== t && "start" !== t)
                                        this.logger.warn("loadFile", "is loading", "segment:", e, "type:", t);
                                    else {
                                        if (!this.checkLoadCondition(e))
                                            return this.state = j.IDLE,
                                                void this.logger.warn("loadFile", "checkLoadCondition failed", "segment:", e, "type:", t);
                                        this.currentNo = e.no;
                                        var i = this.getBaseUrl(e.file) + e.file
                                            , a = 1
                                            , o = function (e, t) {
                                            return "function" == typeof r.options.processURL ? r.options.processURL(e, t) : e
                                        }
                                            , s = function () {
                                            r.httpWorker.postMessage({
                                                type: "invoke",
                                                fileType: "ts",
                                                method: "get",
                                                name: e.no,
                                                url: o(i, e)
                                            })
                                        };
                                        this.state = j.LOADING,
                                            this.events.emit(de.LoaderLoading, e, t, n),
                                            this.httpWorker.onmessage = function (i) {
                                                r.state = j.DONE;
                                                var o = i.data;
                                                if (r.logger.info("loadfile", "httpWorker", "onmessage get data"),
                                                o && "error" !== o.type)
                                                    "notice" === o.type ? "speed" === o.noticeType && r.events.emit(de.LoaderUpdateSpeed, o.data) : "ts" === o.fileType && o.name === e.no ? (r.logger.info("loadFile", "read success", "data no:", o.name),
                                                        r.state = j.IDLE,
                                                        r.events.emit(de.LoaderLoaded, o, e, t, n)) : r.logger.warn("loadFile", "is not ts file or the segment'no is not equal.", "fileType:", o.fileType, "data:", o);
                                                else if (r.state = j.ERROR,
                                                a <= r.maxRetryCount)
                                                    r.logger.warn("loadFile", "retry to load", "count:", a, "segment:", e),
                                                        s(),
                                                        a += 1;
                                                else {
                                                    r.events.emit(de.LoaderError, e, t, n);
                                                    r.events.emit(de.PlayerAlert, "Load file error, please concat administrator.");
                                                    var u = [r.state, "Load File error.", "load count:", a, "segment:", e];
                                                    r.events.emit(de.PlayerThrowError, u)
                                                }
                                            }
                                            ,
                                            s()
                                    }
                            }
                        }, {
                            key: "destroy",
                            value: function () {
                                this.httpWorker && this.httpWorker.terminate()
                            }
                        }]),
                            n
                    }(H)
                }
                    , lt = function (e) {
                    c()(n, e);
                    var t = st(n);

                    function n(e, r) {
                        var a;
                        return i()(this, n),
                            a = t.call(this),
                            v()(u()(a), "state", null),
                            v()(u()(a), "exeLoader", null),
                            v()(u()(a), "loadData", null),
                            v()(u()(a), "type", "HLS"),
                            v()(u()(a), "options", null),
                            v()(u()(a), "dataController", null),
                            a.type = e || a.type,
                            a.player = r.player,
                            a.options = r.player.options,
                            a.dataController = a.player.dataController,
                            a.init(a.type, a.options),
                            a
                    }

                    return o()(n, [{
                        key: "init",
                        value: function (e, t) {
                            this.bindEvent(),
                                this.setExeLoader(new ut[e](ot(ot({}, t), {}, {
                                    player: this.player,
                                    loaderController: this
                                }))),
                                this.setSourceURL(t.sourceURL),
                                this.player.loadData ? this.setLoadData(this.player.loadData) : this.setLoadData(this.dataController.getDataInstance("load", t)),
                                this.exeLoader.setLoadData(this.loadData)
                        }
                    }, {
                        key: "run",
                        value: function () {
                            this.state = j.LOAD_PLAYLIST,
                                this.events.emit(de.LoaderPlayListStart, this),
                                this.logger.info("run", j[this.state], "url:", this.options.sourceURL),
                                this.loadPlaylist()
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            var e = this;
                            this.events.on(de.LoaderLoadFile, (function (t, n, r) {
                                    e.exeLoader.loadFile(t, n, r)
                                }
                            ))
                        }
                    }, {
                        key: "loadPlaylist",
                        value: function (e) {
                            var t = this;
                            this.exeLoader.loadPlaylist((function (n) {
                                    n ? (t.dataController.setLoadDataSourceData(t.exeLoader.getSourceData()),
                                        t.dataController.setLoadDataSegmentPool(t.exeLoader.getSegmentPool()),
                                        t.state = j.LOADED_PLAYLIST,
                                        t.events.emit(de.LoaderPlayListLoaded, t),
                                    "function" == typeof e && e.call(t, n)) : t.logger.error("run", "start load m3u8", "data:", n)
                                }
                            ))
                        }
                    }, {
                        key: "switchPlaylist",
                        value: function (e, t) {
                            this.setSourceURL(e),
                                this.dataController.clearLoadData(),
                                this.state = j.LOAD_PLAYLIST,
                                this.events.emit(de.LoaderPlayListStart, this),
                                this.logger.info("switchPlaylist", j[this.state], "url:", e),
                                this.loadPlaylist(t)
                        }
                    }, {
                        key: "setExeLoader",
                        value: function (e) {
                            this.exeLoader = e
                        }
                    }, {
                        key: "getExeLoader",
                        value: function () {
                            return this.exeLoader
                        }
                    }, {
                        key: "setSourceURL",
                        value: function (e) {
                            this.exeLoader.setSourceURL(e)
                        }
                    }, {
                        key: "getSourceURL",
                        value: function () {
                            return this.exeLoader.getSourceURL()
                        }
                    }, {
                        key: "setLoadData",
                        value: function (e) {
                            this.loadData = e
                        }
                    }, {
                        key: "getLoadData",
                        value: function () {
                            return this.loadData
                        }
                    }, {
                        key: "getSourceData",
                        value: function () {
                            return this.exeLoader.getSourceData()
                        }
                    }, {
                        key: "destroy",
                        value: function () {
                            this.exeLoader.destroy()
                        }
                    }]),
                        n
                }(D);

                function ct(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var ht = function (e) {
                    c()(n, e);
                    var t = ct(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this, e),
                            v()(u()(r), "no", 0),
                            v()(u()(r), "start", 0),
                            v()(u()(r), "end", 0),
                            v()(u()(r), "blob", null),
                            v()(u()(r), "arrayBuffer", null),
                            v()(u()(r), "duration", 0),
                            Object.assign(u()(r), e),
                            r
                    }

                    return o()(n, [{
                        key: "size",
                        get: function () {
                            return this.blob.size
                        }
                    }]),
                        n
                }(ae);

                function ft(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var dt = function (e) {
                    c()(n, e);
                    var t = ft(n);

                    function n(e) {
                        return i()(this, n),
                            t.call(this, e)
                    }

                    return o()(n, [{
                        key: "add",
                        value: function (e) {
                            e instanceof ht || (e = new ht(e));
                            var t = this.length;
                            if (0 !== t) {
                                for (; t--;)
                                    if (e.no <= this[t].no)
                                        return void this.splice(t, 1, e);
                                return this.push(e),
                                    this
                            }
                            this.push(e)
                        }
                    }, {
                        key: "getBufferSize",
                        value: function () {
                            return this.length <= 0 ? 0 : this.reduce((function (e, t) {
                                    return isNaN(e) && (e = e.blob.size),
                                    e + t.blob.size
                                }
                            ))
                        }
                    }, {
                        key: "bufferSize",
                        get: function () {
                            return this.getBufferSize()
                        }
                    }, {
                        key: "getBufferDuration",
                        value: function () {
                            return this.length <= 0 ? 0 : this.reduce((function (e, t) {
                                    return isNaN(e) && (e = e.end - e.start),
                                    e + (t.end - t.start)
                                }
                            ))
                        }
                    }, {
                        key: "bufferDuration",
                        get: function () {
                            return this.getBufferDuration()
                        }
                    }]),
                        n
                }(ie);

                function pt(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var yt = function (e) {
                    c()(n, e);
                    var t = pt(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this),
                            v()(u()(e), "bufferPool", []),
                            v()(u()(e), "sourceData", {}),
                            v()(u()(e), "options", {}),
                            v()(u()(e), "segmentPool", []),
                            v()(u()(e), "readBufferNo", null),
                            v()(u()(e), "startLoadTime", null),
                            v()(u()(e), "currentSeekTime", null),
                            e.options = r,
                            e.init(),
                            e
                    }

                    return o()(n, [{
                        key: "init",
                        value: function () {
                            var e = this;
                            this.setBufferPool(new dt),
                                this.events.on(de.LoadDataReadBufferByNo, (function (t, n) {
                                        e.readBufferByNo(t, n)
                                    }
                                )),
                                this.events.on(de.LoadDataReadBuffer, (function (t, n) {
                                        e.readBuffer(t, n)
                                    }
                                )),
                                this.events.on(de.LoaderLoaded, (function (t, n, r, i) {
                                        var a = e.createBuffer({
                                            arrayBuffer: t.arrayBuffer
                                        }, n);
                                        if (e.segmentLoaded(n, a),
                                        "seek" === r && i === e.currentSeekTime)
                                            return e.events.emit(de.LoadDataSeek, a, i),
                                                void e.removeBufferByNo(a.no);
                                        i === e.startLoadTime && e.events.emit(de.LoadDataFirstLoaded, a, i)
                                    }
                                ))
                        }
                    }, {
                        key: "setOptions",
                        value: function (e) {
                            Object.assign(this.options, e)
                        }
                    }, {
                        key: "startLoad",
                        value: function () {
                            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;
                            this.logger.info("startLoad", "begin to load ts data", "time:", e),
                                isNaN(e) ? this.logger.error("seekTime", "seek", "time:", e) : (this.startLoadTime = e,
                                    this.loadSegmentByTime(e, "start"))
                        }
                    }, {
                        key: "readBuffer",
                        value: function (e, t) {
                            var n = this.getSegmentByTime(e);
                            n && this.readBufferByNo(n.no, t)
                        }
                    }, {
                        key: "segmentLoaded",
                        value: function (e, t) {
                            t && this.addBufferPool(t),
                            e.no === this.options.player.currentIndex && this.readBufferByNo(e.no),
                            e.no < this.segmentPool.getLast().no && this.loadSegmentByNo(e.no + 1)
                        }
                    }, {
                        key: "seekTime",
                        value: function (e) {
                            if (isNaN(e))
                                this.logger.error("seekTime", "seek", "time:", e);
                            else {
                                var t;
                                this.currentSeekTime = e;
                                var n = this.bufferPool.indexOfByTime(e);
                                n > -1 ? (t = this.bufferPool[n],
                                    this.events.emit(de.LoadDataSeek, t, e)) : (this.removeBufferPool(this.bufferPool.length),
                                    this.loadSegmentByTime(e, "seek"))
                            }
                        }
                    }, {
                        key: "loadSegmentByTime",
                        value: function (e, t) {
                            if (!isNaN(e)) {
                                var n = this.segmentPool.indexOfByTime(e);
                                if (n >= 0) {
                                    var r = this.segmentPool[n];
                                    this.events.emit(de.LoaderLoadFile, r, t, e)
                                } else
                                    this.logger.error("loadSegmentByTime", "time over", "time:", e, "type:", t)
                            }
                        }
                    }, {
                        key: "createBuffer",
                        value: function (e, t) {
                            if (e) {
                                var n = {
                                    start: t.start,
                                    end: t.end,
                                    no: t.no,
                                    duration: t.end - t.start,
                                    arrayBuffer: e.arrayBuffer
                                };
                                return new ht(n)
                            }
                        }
                    }, {
                        key: "isValidSegmentNo",
                        value: function (e) {
                            return !isNaN(e) && e > 0 && e <= this.segmentPool.length
                        }
                    }, {
                        key: "loadSegmentByNo",
                        value: function (e) {
                            var t = e - 1
                                , n = this.segmentPool.get(t);
                            n && this.events.emit(de.LoaderLoadFile, n, "play")
                        }
                    }, {
                        key: "readBufferByNo",
                        value: function (e, t) {
                            this.isValidSegmentNo(e) ? (this.readBufferNo = e,
                                t = t || function (e) {
                                    this.events.emit(de.LoadDataRead, e)
                                }
                                ,
                                this.getBlobByNo(e, t)) : this.logger.error("readBufferByNo", "check buffer no", "is not valid no", e)
                        }
                    }, {
                        key: "getSegmentByTime",
                        value: function (e) {
                            var t = this.segmentPool.indexOfByTime(e);
                            return this.segmentPool[t]
                        }
                    }, {
                        key: "getBlobByNo",
                        value: function (e, t) {
                            if (isNaN(e))
                                this.logger.error("getBlobByNo", "isNaN", "no:", e);
                            else {
                                var n;
                                if (!this.isBufferReading)
                                    return this.isBufferReading = !0,
                                        n = this.bufferPool.getByKeyValue("no", e)[0],
                                    "function" == typeof t && (t.call(this, n),
                                    n && this.removeBufferByNo(n.no)),
                                        this.isBufferReading = !1,
                                        n;
                                this.logger.warn("getBlobByNo", "isBufferReading", "no:", e)
                            }
                        }
                    }, {
                        key: "addBufferPool",
                        value: function (e) {
                            if (this.bufferPool.length) {
                                if (this.bufferPool[0].no === e.no + 1)
                                    return this.bufferPool.unshift(e),
                                        !0;
                                var t = this.bufferPool.getLast();
                                if (e.no - t.no == 1)
                                    return this.bufferPool.push(e),
                                        !0;
                                if (this.bufferPool.indexOfByKey("no", e.no))
                                    return !0;
                                this.bufferPool.splice(0, this.bufferPool.length)
                            }
                            this.bufferPool.push(e)
                        }
                    }, {
                        key: "removeBufferPool",
                        value: function (e) {
                            this.bufferPool.splice(0, e + 1)
                        }
                    }, {
                        key: "removeBufferByNo",
                        value: function (e) {
                            var t = this.bufferPool.indexOfByKey("no", e);
                            if (!(t <= -1))
                                return this.removeBufferPool(t),
                                    this.bufferPool.length ? this.bufferPool.getLast().no < this.segmentPool.getLast().no && this.loadSegmentByNo(this.bufferPool.getLast().no + 1) : e < this.segmentPool.getLast().no && this.loadSegmentByNo(e + 1),
                                    !0
                        }
                    }, {
                        key: "clear",
                        value: function () {
                            this.sourceData = {},
                                this.readBufferNo = null,
                                this.currentSeekTime = null,
                                this.bufferPool.length = 0,
                                this.segmentPool.length = 0
                        }
                    }, {
                        key: "getSegmentByNo",
                        value: function (e) {
                            return this.segmentPool.get(e - 1)
                        }
                    }, {
                        key: "getSegment",
                        value: function (e) {
                            return this.segmentPool.getByTime(e)
                        }
                    }, {
                        key: "setSourceData",
                        value: function (e) {
                            this.sourceData = e
                        }
                    }, {
                        key: "getSourceData",
                        value: function () {
                            return this.sourceData
                        }
                    }, {
                        key: "setBufferPool",
                        value: function (e) {
                            this.bufferPool = e
                        }
                    }, {
                        key: "getBufferPool",
                        value: function () {
                            return this.bufferPool
                        }
                    }, {
                        key: "setSegmentPool",
                        value: function (e) {
                            this.segmentPool = e
                        }
                    }, {
                        key: "getSegmentPool",
                        value: function () {
                            return this.segmentPool
                        }
                    }, {
                        key: "reset",
                        value: function () {
                            this.removeBufferPool(this.bufferPool.length)
                        }
                    }]),
                        n
                }(N);

                function vt(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var gt = function (e) {
                    c()(n, e);
                    var t = vt(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this),
                            v()(u()(r), "loadData", null),
                            r.options = e,
                            r
                    }

                    return o()(n, [{
                        key: "setLoadData",
                        value: function () {
                            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)
                                t[n] = arguments[n];
                            this.loadData = A()(yt, t)
                        }
                    }, {
                        key: "getLoadData",
                        value: function () {
                            return this.loadData
                        }
                    }, {
                        key: "getLoadDataBufferPool",
                        value: function () {
                            return this.loadData.bufferPool
                        }
                    }, {
                        key: "setLoadDataSourceData",
                        value: function (e) {
                            this.loadData.setSourceData(e)
                        }
                    }, {
                        key: "setLoadDataSegmentPool",
                        value: function (e) {
                            this.loadData.setSegmentPool(e)
                        }
                    }, {
                        key: "startLoad",
                        value: function (e) {
                            e = Math.max(e, 0),
                                this.startLoadData(e)
                        }
                    }, {
                        key: "startLoadData",
                        value: function (e) {
                            this.loadData.startLoad(e)
                        }
                    }, {
                        key: "clearLoadData",
                        value: function () {
                            this.loadData.clear()
                        }
                    }, {
                        key: "getDataInstance",
                        value: function (e) {
                            if (e)
                                switch (e) {
                                    case "load":
                                        if (!this.loadData) {
                                            for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++)
                                                n[r - 1] = arguments[r];
                                            this.setLoadData.apply(this, n)
                                        }
                                        return this.loadData;
                                    default:
                                        return null
                                }
                        }
                    }]),
                        n
                }(D);

                function mt(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var bt, kt, xt = function (e) {
                    c()(n, e);
                    var t = mt(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this, e),
                            v()(u()(r), "checkHanlder", null),
                            v()(u()(r), "resetStatus", {
                                processor: !1,
                                audioPlayer: !1
                            }),
                            r.player = e.player,
                            r.player ? (r.audioPlayer = e.audioPlayer,
                                r.imagePlayer = e.imagePlayer,
                                r.loadData = e.loadData,
                                r.bindEvent(),
                                r) : f()(r)
                    }

                    return o()(n, [{
                        key: "bindEvent",
                        value: function () {
                            var e = this;
                            this.events.on(de.ProcessorResetEnd, (function () {
                                    e.checkResetReady("processor")
                                }
                            )),
                                this.events.on(de.AudioPlayerReady, (function () {
                                        e.checkResetReady("audioPlayer")
                                    }
                                )),
                                this.events.on(de.PlayerResetReady, (function () {
                                        e.onResetReady()
                                    }
                                )),
                                this.events.on(de.LoadDataSeek, (function (t, n) {
                                        e.onSeek(t, n)
                                    }
                                )),
                                this.events.on(de.ImagePlayerRenderEnd, (function (t, n) {
                                        e.onRenderEnd(t, n)
                                    }
                                )),
                                this.events.on(de.ImagePlayerWait, (function () {
                                        e.audioPlayer.pause()
                                    }
                                ))
                        }
                    }, {
                        key: "play",
                        value: function (e) {
                            var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                            this.logger.warn("play", "play start"),
                                this.sync(e, t)
                        }
                    }, {
                        key: "sync",
                        value: function (e) {
                            var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]
                                , n = this.player
                                , r = this.audioPlayer
                                , i = this.imagePlayer
                                , a = r.offset
                                , o = i.offset
                                , s = Math.min(a, o)
                                , u = Math.max(a, o);
                            r.need || (s = o,
                                u = o);
                            var l = n.playbackRate;
                            if (n.seeking && (n.seeking = !1),
                            !n.reseting && ("pause" !== n.status || t) && "waiting" !== r.status && "wait" !== i.status)
                                if ("end" !== n.status) {
                                    if (this.setCurrentTime(e),
                                        !(e < s))
                                        return r.need && e >= a && e <= o ? (this.events.once(de.AudioPlayerPlaySuccess, (function () {
                                                i.render(o)
                                            }
                                        )),
                                            r.playbackRate = l,
                                            void (t || r.play())) : void (e >= o && (!r.need || e <= a) ? i.render(e) : e > u && (this.audioPlayer.playbackRate = l,
                                        t || this.audioPlayer.play(),
                                            i.render(e)));
                                    this.sync(s)
                                } else
                                    r.paused || r.pause()
                        }
                    }, {
                        key: "setCurrentTime",
                        value: function (e) {
                            this.player.currentTime = e,
                                this.events.emit(de.PlayerTimeUpdate, e)
                        }
                    }, {
                        key: "pause",
                        value: function () {
                            this.audioPlayer.pause(),
                                this.clearDrawHanlder()
                        }
                    }, {
                        key: "seek",
                        value: function (e) {
                            var t = this
                                , n = this.player.status
                                , r = this.imagePlayer.isBuffered(e)
                                , i = this.audioPlayer.isBuffered(e);
                            "pause" !== n && this.player.pause(),
                                r && i ? (this.logger.warn("seek", "seek in buffer, time: ".concat(e, ", buffer: ").concat(this.player.buffer()[0], ", ").concat(this.player.buffer()[1])),
                                    this.audioPlayer.onSeekedHandler = function () {
                                        "pause" === n ? t.play(t.player.currentTime, !0) : t.player.play()
                                    }
                                    ,
                                    this.audioPlayer.currentTime = e) : this.reset()
                        }
                    }, {
                        key: "reset",
                        value: function (e) {
                            this.logger.info("reset", "reset start"),
                                this.player.reseting = !0,
                                this.events.emit(de.PlayerReset, e),
                                this.resetStatus = {
                                    processor: !1,
                                    audioPlayer: !1
                                },
                                this.player.processController.reset(),
                                this.player.streamController.reset(),
                                this.player.audioPlayer.reset(e),
                                this.player.imagePlayer.reset(),
                                this.player.currentIndex = null
                        }
                    }, {
                        key: "checkResetReady",
                        value: function (e) {
                            var t = this.resetStatus;
                            if (e && "string" == typeof e) {
                                t[e] = !0;
                                for (var n = Object.keys(t), r = 0; r < n.length; r++)
                                    if (!t[n[r]])
                                        return !1;
                                this.logger.warn("checkResetReady", "reset ready"),
                                    this.events.emit(de.PlayerResetReady)
                            }
                        }
                    }, {
                        key: "onResetReady",
                        value: function () {
                            this.player.reseting = !1,
                                this.logger.info("onResetReady", "reset Ready"),
                            this.player.changing && this.events.emit(de.DataProcessorReady),
                            this.player.seeking && this.player.loadData.seekTime(this.player.currentTime / 1e3)
                        }
                    }, {
                        key: "onSeek",
                        value: function (e, t) {
                            var n = this.player.currentTime;
                            this.logger.info("onseek", n, e, e.no, t),
                                e && e.no && Math.abs(n - Math.floor(1e3 * t)) < 2 ? (this.player.currentIndex = e.no,
                                    this.logger.info("seektime:", e.no, t, this.player.currentTime),
                                    this.player.seekSegmentNo = e.no,
                                    this.player.streamController.startLoad(e.no)) : this.logger.warn("seek failue, not found data", n, e, t)
                        }
                    }, {
                        key: "clearDrawHanlder",
                        value: function () {
                            clearTimeout(this.drawFrameHanlder),
                                this.drawFrameHanlder = null
                        }
                    }, {
                        key: "onRenderEnd",
                        value: function (e, t) {
                            this.player.seekTime && (this.logger.info("onRenderEnd", "seektoRenderTime:", Date.now() - this.player.seekTime),
                                this.player.seekTime = null);
                            var n = this.imagePlayer
                                , r = this.audioPlayer
                                , i = this.player.playbackRate
                                , a = r.currentTime
                                , o = n.currentTime
                                , s = r.offset
                                , u = n.fragDuration
                                , l = a - o
                                , c = 0;
                            r.need ? o < s ? this.drawNext((i < 1 ? e : o) + t * i, u) : (l > 0 && l > u ? u = (c = o + Math.ceil(l / u + i) * u) - a : (c = o + u * i,
                                u -= l),
                                this.drawNext(c, u)) : this.drawNext(e + t, Math.ceil(t / i))
                        }
                    }, {
                        key: "drawNext",
                        value: function (e, t) {
                            var n = this;
                            this.drawFrameHanlder && this.clearDrawHanlder(),
                                this.drawFrameHanlder = setTimeout((function () {
                                        n.sync(e)
                                    }
                                ), t)
                        }
                    }]),
                        n
                }(N);

                function Pt(e, t) {
                    var n;
                    if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                        if (Array.isArray(e) || (n = function (e, t) {
                            if (!e)
                                return;
                            if ("string" == typeof e)
                                return wt(e, t);
                            var n = Object.prototype.toString.call(e).slice(8, -1);
                            "Object" === n && e.constructor && (n = e.constructor.name);
                            if ("Map" === n || "Set" === n)
                                return Array.from(e);
                            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                                return wt(e, t)
                        }(e)) || t && e && "number" == typeof e.length) {
                            n && (e = n);
                            var r = 0
                                , i = function () {
                            };
                            return {
                                s: i,
                                n: function () {
                                    return r >= e.length ? {
                                        done: !0
                                    } : {
                                        done: !1,
                                        value: e[r++]
                                    }
                                },
                                e: function (e) {
                                    throw e
                                },
                                f: i
                            }
                        }
                        throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                    }
                    var a, o = !0, s = !1;
                    return {
                        s: function () {
                            n = e[Symbol.iterator]()
                        },
                        n: function () {
                            var e = n.next();
                            return o = e.done,
                                e
                        },
                        e: function (e) {
                            s = !0,
                                a = e
                        },
                        f: function () {
                            try {
                                o || null == n.return || n.return()
                            } finally {
                                if (s)
                                    throw a
                            }
                        }
                    }
                }

                function wt(e, t) {
                    (null == t || t > e.length) && (t = e.length);
                    for (var n = 0, r = new Array(t); n < t; n++)
                        r[n] = e[n];
                    return r
                }

                function _t(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                function Bt(e) {
                    if (bt) {
                        for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++)
                            n[r - 1] = arguments[r];
                        bt.apply(void 0, [e].concat(n))
                    }
                }

                function Tt(e) {
                    if (kt) {
                        for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++)
                            n[r - 1] = arguments[r];
                        kt.apply(void 0, [e].concat(n))
                    }
                }

                var Et = function () {
                    function e(t) {
                        i()(this, e),
                            this.payload = t,
                            this.nri = (96 & this.payload[0]) >> 5,
                            this.ntype = 31 & this.payload[0]
                    }

                    return o()(e, [{
                        key: "toString",
                        value: function () {
                            return "".concat(e.type(this), ": NRI: ").concat(this.getNri())
                        }
                    }, {
                        key: "getNri",
                        value: function () {
                            return this.nri >> 6
                        }
                    }, {
                        key: "type",
                        value: function () {
                            return this.ntype
                        }
                    }, {
                        key: "isKeyframe",
                        value: function () {
                            return this.ntype == e.IDR
                        }
                    }, {
                        key: "getSize",
                        value: function () {
                            return 4 + this.payload.byteLength
                        }
                    }, {
                        key: "getData",
                        value: function () {
                            var e = new Uint8Array(this.getSize());
                            return new DataView(e.buffer).setUint32(0, this.getSize() - 4),
                                e.set(this.payload, 4),
                                e
                        }
                    }], [{
                        key: "NDR",
                        get: function () {
                            return 1
                        }
                    }, {
                        key: "IDR",
                        get: function () {
                            return 5
                        }
                    }, {
                        key: "SEI",
                        get: function () {
                            return 6
                        }
                    }, {
                        key: "SPS",
                        get: function () {
                            return 7
                        }
                    }, {
                        key: "PPS",
                        get: function () {
                            return 8
                        }
                    }, {
                        key: "AUD",
                        get: function () {
                            return 9
                        }
                    }, {
                        key: "TYPES",
                        get: function () {
                            var t;
                            return t = {},
                                v()(t, e.IDR, "IDR"),
                                v()(t, e.SEI, "SEI"),
                                v()(t, e.SPS, "SPS"),
                                v()(t, e.PPS, "PPS"),
                                v()(t, e.NDR, "NDR"),
                                v()(t, e.AUD, "AUD"),
                                t
                        }
                    }, {
                        key: "type",
                        value: function (t) {
                            return t.ntype in e.TYPES ? e.TYPES[t.ntype] : "UNKNOWN"
                        }
                    }]),
                        e
                }()
                    , St = function () {
                    function e(t) {
                        i()(this, e),
                            this.data = t,
                            this.index = 0,
                            this.bitLength = 8 * t.byteLength
                    }

                    return o()(e, [{
                        key: "bitsAvailable",
                        get: function () {
                            return this.bitLength - this.index
                        }
                    }, {
                        key: "skipBits",
                        value: function (e) {
                            if (this.bitsAvailable < e)
                                return !1;
                            this.index += e
                        }
                    }, {
                        key: "readBits",
                        value: function (e) {
                            var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]
                                , n = this.getBits(e, this.index, t);
                            return n
                        }
                    }, {
                        key: "getBits",
                        value: function (e, t) {
                            var n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2];
                            if (this.bitsAvailable < e)
                                return 0;
                            var r = t % 8
                                , i = this.data[t / 8 | 0] & 255 >>> r
                                , a = 8 - r;
                            if (a >= e)
                                return n && (this.index += e),
                                i >> a - e;
                            n && (this.index += a);
                            var o = e - a;
                            return i << o | this.getBits(o, t + a, n)
                        }
                    }, {
                        key: "skipLZ",
                        value: function () {
                            var e;
                            for (e = 0; e < this.bitLength - this.index; ++e)
                                if (0 !== this.getBits(1, this.index + e, !1))
                                    return this.index += e,
                                        e;
                            return e
                        }
                    }, {
                        key: "skipUEG",
                        value: function () {
                            this.skipBits(1 + this.skipLZ())
                        }
                    }, {
                        key: "skipEG",
                        value: function () {
                            this.skipBits(1 + this.skipLZ())
                        }
                    }, {
                        key: "readUEG",
                        value: function () {
                            var e = this.skipLZ();
                            return this.readBits(e + 1) - 1
                        }
                    }, {
                        key: "readEG",
                        value: function () {
                            var e = this.readUEG();
                            return 1 & e ? 1 + e >>> 1 : -1 * (e >>> 1)
                        }
                    }, {
                        key: "readBoolean",
                        value: function () {
                            return 1 === this.readBits(1)
                        }
                    }, {
                        key: "readUByte",
                        value: function () {
                            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1;
                            return this.readBits(8 * e)
                        }
                    }, {
                        key: "readUShort",
                        value: function () {
                            return this.readBits(16)
                        }
                    }, {
                        key: "readUInt",
                        value: function () {
                            return this.readBits(32)
                        }
                    }]),
                        e
                }()
                    , Ct = function () {
                    function e(t) {
                        i()(this, e),
                            this.remuxer = t,
                            this.track = t.mp4track
                    }

                    return o()(e, [{
                        key: "parseSPS",
                        value: function (t) {
                            var n = e.readSPS(new Uint8Array(t));
                            this.track.width = n.width,
                                this.track.height = n.height,
                                this.track.sps = [new Uint8Array(t)],
                                this.track.codec = "avc1.";
                            for (var r = new DataView(t.buffer, t.byteOffset + 1, 4), i = 0; i < 3; ++i) {
                                var a = r.getUint8(i).toString(16);
                                a.length < 2 && (a = "0" + a),
                                    this.track.codec += a
                            }
                        }
                    }, {
                        key: "parsePPS",
                        value: function (e) {
                            this.track.pps = [new Uint8Array(e)]
                        }
                    }, {
                        key: "parseNAL",
                        value: function (e) {
                            if (!e)
                                return !1;
                            var t = !1;
                            switch (e.type()) {
                                case Et.NDR:
                                case Et.IDR:
                                    t = !0;
                                    break;
                                case Et.PPS:
                                    this.track.pps || (this.parsePPS(e.getData().subarray(4)),
                                    !this.remuxer.readyToDecode && this.track.pps && this.track.sps && (this.remuxer.readyToDecode = !0)),
                                        t = !0;
                                    break;
                                case Et.SPS:
                                    this.track.sps || (this.parseSPS(e.getData().subarray(4)),
                                    !this.remuxer.readyToDecode && this.track.pps && this.track.sps && (this.remuxer.readyToDecode = !0)),
                                        t = !0;
                                    break;
                                case Et.AUD:
                                    Bt("AUD - ignoing and disable HD mode for live channel"),
                                    this.remuxer.isHDAvail && (this.remuxer.isHDAvail = !1);
                                    break;
                                case Et.SEI:
                                    Bt("SEI - ignoing")
                            }
                            return t
                        }
                    }], [{
                        key: "extractNALu",
                        value: function (e) {
                            for (var t, n, r = 0, i = e.byteLength, a = 0, o = []; r < i;)
                                switch (t = e[r++],
                                    a) {
                                    case 0:
                                        0 === t && (a = 1);
                                        break;
                                    case 1:
                                        a = 0 === t ? 2 : 0;
                                        break;
                                    case 2:
                                    case 3:
                                        0 === t ? a = 3 : 1 === t && r < i ? (n && o.push(e.subarray(n, r - a - 1)),
                                            n = r,
                                            a = 0) : a = 0
                                }
                            return n && o.push(e.subarray(n, i)),
                                o
                        }
                    }, {
                        key: "skipScalingList",
                        value: function (e, t) {
                            for (var n = 8, r = 8, i = 0; i < t; i++)
                                0 !== r && (r = (n + e.readEG() + 256) % 256),
                                    n = 0 === r ? n : r
                        }
                    }, {
                        key: "readSPS",
                        value: function (t) {
                            var n, r, i, a, o, s, u = new St(t), l = 0, c = 0, h = 0, f = 0, d = 1;
                            if (u.readUByte(),
                                n = u.readUByte(),
                                u.readBits(5),
                                u.skipBits(3),
                                u.readUByte(),
                                u.skipUEG(),
                            100 === n || 110 === n || 122 === n || 244 === n || 44 === n || 83 === n || 86 === n || 118 === n || 128 === n) {
                                var p = u.readUEG();
                                if (3 === p && u.skipBits(1),
                                    u.skipUEG(),
                                    u.skipUEG(),
                                    u.skipBits(1),
                                    u.readBoolean()) {
                                    s = 3 !== p ? 8 : 12;
                                    for (var y = 0; y < s; ++y)
                                        u.readBoolean() && (y < 6 ? e.skipScalingList(u, 16) : e.skipScalingList(u, 64))
                                }
                            }
                            u.skipUEG();
                            var v = u.readUEG();
                            if (0 === v)
                                u.readUEG();
                            else if (1 === v) {
                                u.skipBits(1),
                                    u.skipEG(),
                                    u.skipEG(),
                                    r = u.readUEG();
                                for (var g = 0; g < r; ++g)
                                    u.skipEG()
                            }
                            if (u.skipUEG(),
                                u.skipBits(1),
                                i = u.readUEG(),
                                a = u.readUEG(),
                            0 === (o = u.readBits(1)) && u.skipBits(1),
                                u.skipBits(1),
                            u.readBoolean() && (l = u.readUEG(),
                                c = u.readUEG(),
                                h = u.readUEG(),
                                f = u.readUEG()),
                                u.readBoolean()) {
                                if (u.readBoolean()) {
                                    var m;
                                    switch (u.readUByte()) {
                                        case 1:
                                            m = [1, 1];
                                            break;
                                        case 2:
                                            m = [12, 11];
                                            break;
                                        case 3:
                                            m = [10, 11];
                                            break;
                                        case 4:
                                            m = [16, 11];
                                            break;
                                        case 5:
                                            m = [40, 33];
                                            break;
                                        case 6:
                                            m = [24, 11];
                                            break;
                                        case 7:
                                            m = [20, 11];
                                            break;
                                        case 8:
                                            m = [32, 11];
                                            break;
                                        case 9:
                                            m = [80, 33];
                                            break;
                                        case 10:
                                            m = [18, 11];
                                            break;
                                        case 11:
                                            m = [15, 11];
                                            break;
                                        case 12:
                                            m = [64, 33];
                                            break;
                                        case 13:
                                            m = [160, 99];
                                            break;
                                        case 14:
                                            m = [4, 3];
                                            break;
                                        case 15:
                                            m = [3, 2];
                                            break;
                                        case 16:
                                            m = [2, 1];
                                            break;
                                        case 255:
                                            m = [u.readUByte() << 8 | u.readUByte(), u.readUByte() << 8 | u.readUByte()]
                                    }
                                    m && (d = m[0] / m[1])
                                }
                                if (u.readBoolean() && u.skipBits(1),
                                u.readBoolean() && (u.skipBits(4),
                                u.readBoolean() && u.skipBits(24)),
                                u.readBoolean() && (u.skipUEG(),
                                    u.skipUEG()),
                                    u.readBoolean())
                                    u.readUInt(),
                                        u.readUInt(),
                                        u.readBoolean()
                            }
                            return {
                                width: Math.ceil((16 * (i + 1) - 2 * l - 2 * c) * d),
                                height: (2 - o) * (a + 1) * 16 - (o ? 2 : 4) * (h + f)
                            }
                        }
                    }]),
                        e
                }()
                    , Rt = function () {
                    function e(t) {
                        i()(this, e),
                            this.listener = {},
                            this.type = "" | t
                    }

                    return o()(e, [{
                        key: "on",
                        value: function (e, t) {
                            return this.listener[e] || (this.listener[e] = []),
                                this.listener[e].push(t),
                                !0
                        }
                    }, {
                        key: "off",
                        value: function (e, t) {
                            if (this.listener[e]) {
                                var n = this.listener[e].indexOf(t);
                                return n > -1 && this.listener[e].splice(n, 1),
                                    !0
                            }
                            return !1
                        }
                    }, {
                        key: "offAll",
                        value: function () {
                            this.listener = {}
                        }
                    }, {
                        key: "dispatch",
                        value: function (e, t) {
                            return !!this.listener[e] && (this.listener[e].map((function (e) {
                                    e.apply(null, [t])
                                }
                            )),
                                !0)
                        }
                    }]),
                        e
                }()
                    , Lt = Math.pow(2, 32) - 1
                    , At = function () {
                    function e() {
                        i()(this, e)
                    }

                    return o()(e, null, [{
                        key: "init",
                        value: function () {
                            var t;
                            for (t in e.types = {
                                avc1: [],
                                avcC: [],
                                btrt: [],
                                dinf: [],
                                dref: [],
                                esds: [],
                                ftyp: [],
                                hdlr: [],
                                mdat: [],
                                mdhd: [],
                                mdia: [],
                                mfhd: [],
                                minf: [],
                                moof: [],
                                moov: [],
                                mp4a: [],
                                mvex: [],
                                mvhd: [],
                                sdtp: [],
                                stbl: [],
                                stco: [],
                                stsc: [],
                                stsd: [],
                                stsz: [],
                                stts: [],
                                tfdt: [],
                                tfhd: [],
                                traf: [],
                                trak: [],
                                trun: [],
                                trex: [],
                                tkhd: [],
                                vmhd: [],
                                smhd: []
                            },
                                e.types)
                                e.types.hasOwnProperty(t) && (e.types[t] = [t.charCodeAt(0), t.charCodeAt(1), t.charCodeAt(2), t.charCodeAt(3)]);
                            var n = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 105, 100, 101, 111, 72, 97, 110, 100, 108, 101, 114, 0])
                                ,
                                r = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0]);
                            e.HDLR_TYPES = {
                                video: n,
                                audio: r
                            };
                            var i = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1])
                                , a = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]);
                            e.STTS = e.STSC = e.STCO = a,
                                e.STSZ = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
                                e.VMHD = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]),
                                e.SMHD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]),
                                e.STSD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]);
                            var o = new Uint8Array([105, 115, 111, 109])
                                , s = new Uint8Array([97, 118, 99, 49])
                                , u = new Uint8Array([0, 0, 0, 1]);
                            e.FTYP = e.box(e.types.ftyp, o, u, o, s),
                                e.DINF = e.box(e.types.dinf, e.box(e.types.dref, i))
                        }
                    }, {
                        key: "box",
                        value: function (e) {
                            for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++)
                                n[r - 1] = arguments[r];
                            for (var i, a = 8, o = n.length, s = o; o--;)
                                a += n[o].byteLength;
                            for ((i = new Uint8Array(a))[0] = a >> 24 & 255,
                                     i[1] = a >> 16 & 255,
                                     i[2] = a >> 8 & 255,
                                     i[3] = 255 & a,
                                     i.set(e, 4),
                                     o = 0,
                                     a = 8; o < s; ++o)
                                i.set(n[o], a),
                                    a += n[o].byteLength;
                            return i
                        }
                    }, {
                        key: "hdlr",
                        value: function (t) {
                            return e.box(e.types.hdlr, e.HDLR_TYPES[t])
                        }
                    }, {
                        key: "mdat",
                        value: function (t) {
                            return e.box(e.types.mdat, t)
                        }
                    }, {
                        key: "mdhd",
                        value: function (t, n) {
                            n *= t;
                            var r = Math.floor(n / (Lt + 1))
                                , i = Math.floor(n % (Lt + 1));
                            return e.box(e.types.mdhd, new Uint8Array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t, r >> 24, r >> 16 & 255, r >> 8 & 255, 255 & r, i >> 24, i >> 16 & 255, i >> 8 & 255, 255 & i, 85, 196, 0, 0]))
                        }
                    }, {
                        key: "mdia",
                        value: function (t) {
                            return e.box(e.types.mdia, e.mdhd(t.timescale, t.duration), e.hdlr(t.type), e.minf(t))
                        }
                    }, {
                        key: "mfhd",
                        value: function (t) {
                            return e.box(e.types.mfhd, new Uint8Array([0, 0, 0, 0, t >> 24, t >> 16 & 255, t >> 8 & 255, 255 & t]))
                        }
                    }, {
                        key: "minf",
                        value: function (t) {
                            return "audio" === t.type ? e.box(e.types.minf, e.box(e.types.smhd, e.SMHD), e.DINF, e.stbl(t)) : e.box(e.types.minf, e.box(e.types.vmhd, e.VMHD), e.DINF, e.stbl(t))
                        }
                    }, {
                        key: "moof",
                        value: function (t, n, r) {
                            return e.box(e.types.moof, e.mfhd(t), e.traf(r, n))
                        }
                    }, {
                        key: "moov",
                        value: function (t, n, r) {
                            for (var i = t.length, a = []; i--;)
                                a[i] = e.trak(t[i]);
                            return e.box.apply(null, [e.types.moov, e.mvhd(r, n)].concat(a).concat(e.mvex(t)))
                        }
                    }, {
                        key: "mvex",
                        value: function (t) {
                            for (var n = t.length, r = []; n--;)
                                r[n] = e.trex(t[n]);
                            return e.box.apply(null, [e.types.mvex].concat(r))
                        }
                    }, {
                        key: "mvhd",
                        value: function (t, n) {
                            n *= t;
                            var r = Math.floor(n / (Lt + 1))
                                , i = Math.floor(n % (Lt + 1))
                                ,
                                a = new Uint8Array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t, r >> 24, r >> 16 & 255, r >> 8 & 255, 255 & r, i >> 24, i >> 16 & 255, i >> 8 & 255, 255 & i, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255]);
                            return e.box(e.types.mvhd, a)
                        }
                    }, {
                        key: "sdtp",
                        value: function (t) {
                            var n, r, i = t.samples || [], a = new Uint8Array(4 + i.length);
                            for (r = 0; r < i.length; r++)
                                n = i[r].flags,
                                    a[r + 4] = n.dependsOn << 4 | n.isDependedOn << 2 | n.hasRedundancy;
                            return e.box(e.types.sdtp, a)
                        }
                    }, {
                        key: "stbl",
                        value: function (t) {
                            return e.box(e.types.stbl, e.stsd(t), e.box(e.types.stts, e.STTS), e.box(e.types.stsc, e.STSC), e.box(e.types.stsz, e.STSZ), e.box(e.types.stco, e.STCO))
                        }
                    }, {
                        key: "avc1",
                        value: function (t) {
                            var n, r, i, a = [], o = [];
                            for (n = 0; n < t.sps.length; n++)
                                i = (r = t.sps[n]).byteLength,
                                    a.push(i >>> 8 & 255),
                                    a.push(255 & i),
                                    a = a.concat(Array.prototype.slice.call(r));
                            for (n = 0; n < t.pps.length; n++)
                                i = (r = t.pps[n]).byteLength,
                                    o.push(i >>> 8 & 255),
                                    o.push(255 & i),
                                    o = o.concat(Array.prototype.slice.call(r));
                            var s = e.box(e.types.avcC, new Uint8Array([1, a[3], a[4], a[5], 255, 224 | t.sps.length].concat(a).concat([t.pps.length]).concat(o)))
                                , u = t.width
                                , l = t.height;
                            return e.box(e.types.avc1, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, u >> 8 & 255, 255 & u, l >> 8 & 255, 255 & l, 0, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, 18, 98, 105, 110, 101, 108, 112, 114, 111, 46, 114, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 17, 17]), s, e.box(e.types.btrt, new Uint8Array([0, 28, 156, 128, 0, 45, 198, 192, 0, 45, 198, 192])))
                        }
                    }, {
                        key: "esds",
                        value: function (e) {
                            var t = e.config.byteLength
                                , n = new Uint8Array(26 + t + 3);
                            return n.set([0, 0, 0, 0, 3, 23 + t, 0, 1, 0, 4, 15 + t, 64, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, t]),
                                n.set(e.config, 26),
                                n.set([6, 1, 2], 26 + t),
                                n
                        }
                    }, {
                        key: "mp4a",
                        value: function (t) {
                            var n = t.audiosamplerate;
                            return e.box(e.types.mp4a, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, t.channelCount, 0, 16, 0, 0, 0, 0, n >> 8 & 255, 255 & n, 0, 0]), e.box(e.types.esds, e.esds(t)))
                        }
                    }, {
                        key: "stsd",
                        value: function (t) {
                            return "audio" === t.type ? e.box(e.types.stsd, e.STSD, e.mp4a(t)) : e.box(e.types.stsd, e.STSD, e.avc1(t))
                        }
                    }, {
                        key: "tkhd",
                        value: function (t) {
                            var n = t.id
                                , r = t.duration * t.timescale
                                , i = t.width
                                , a = t.height
                                , o = Math.floor(r / (Lt + 1))
                                , s = Math.floor(r % (Lt + 1));
                            return e.box(e.types.tkhd, new Uint8Array([1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, n >> 24 & 255, n >> 16 & 255, n >> 8 & 255, 255 & n, 0, 0, 0, 0, o >> 24, o >> 16 & 255, o >> 8 & 255, 255 & o, s >> 24, s >> 16 & 255, s >> 8 & 255, 255 & s, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, i >> 8 & 255, 255 & i, 0, 0, a >> 8 & 255, 255 & a, 0, 0]))
                        }
                    }, {
                        key: "traf",
                        value: function (t, n) {
                            var r = e.sdtp(t)
                                , i = t.id
                                , a = Math.floor(n / (Lt + 1))
                                , o = Math.floor(n % (Lt + 1));
                            return e.box(e.types.traf, e.box(e.types.tfhd, new Uint8Array([0, 0, 0, 0, i >> 24, i >> 16 & 255, i >> 8 & 255, 255 & i])), e.box(e.types.tfdt, new Uint8Array([1, 0, 0, 0, a >> 24, a >> 16 & 255, a >> 8 & 255, 255 & a, o >> 24, o >> 16 & 255, o >> 8 & 255, 255 & o])), e.trun(t, r.length + 16 + 20 + 8 + 16 + 8 + 8), r)
                        }
                    }, {
                        key: "trak",
                        value: function (t) {
                            return t.duration = t.duration || 4294967295,
                                e.box(e.types.trak, e.tkhd(t), e.mdia(t))
                        }
                    }, {
                        key: "trex",
                        value: function (t) {
                            var n = t.id;
                            return e.box(e.types.trex, new Uint8Array([0, 0, 0, 0, n >> 24, n >> 16 & 255, n >> 8 & 255, 255 & n, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1]))
                        }
                    }, {
                        key: "trun",
                        value: function (t, n) {
                            var r, i, a, o, s, u, l = t.samples || [], c = l.length, h = 12 + 16 * c,
                                f = new Uint8Array(h);
                            for (n += 8 + h,
                                     f.set([0, 0, 15, 1, c >>> 24 & 255, c >>> 16 & 255, c >>> 8 & 255, 255 & c, n >>> 24 & 255, n >>> 16 & 255, n >>> 8 & 255, 255 & n], 0),
                                     r = 0; r < c; r++)
                                a = (i = l[r]).duration,
                                    o = i.size,
                                    s = i.flags,
                                    u = i.cts,
                                    f.set([a >>> 24 & 255, a >>> 16 & 255, a >>> 8 & 255, 255 & a, o >>> 24 & 255, o >>> 16 & 255, o >>> 8 & 255, 255 & o, s.isLeading << 2 | s.dependsOn, s.isDependedOn << 6 | s.hasRedundancy << 4 | s.paddingValue << 1 | s.isNonSync, 61440 & s.degradPrio, 15 & s.degradPrio, u >>> 24 & 255, u >>> 16 & 255, u >>> 8 & 255, 255 & u], 12 + 16 * r);
                            return e.box(e.types.trun, f)
                        }
                    }, {
                        key: "initSegment",
                        value: function (t, n, r) {
                            e.types || e.init();
                            var i, a = e.moov(t, n, r);
                            return (i = new Uint8Array(e.FTYP.byteLength + a.byteLength)).set(e.FTYP),
                                i.set(a, e.FTYP.byteLength),
                                i
                        }
                    }]),
                        e
                }()
                    , Dt = function () {
                    function e(t) {
                        i()(this, e),
                            this.remuxer = t,
                            this.track = t.mp4track,
                            this.aacHeader = null
                    }

                    return o()(e, [{
                        key: "samplingRateMap",
                        get: function () {
                            return [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350]
                        }
                    }, {
                        key: "getAACHeaderData",
                        get: function () {
                            return this.aacHeader
                        }
                    }, {
                        key: "setAACHeaderData",
                        set: function (e) {
                            void 0 === e && (e = null),
                                this.aacHeader = e
                        }
                    }, {
                        key: "getHeaderLength",
                        value: function (e) {
                            return 1 & e[1] ? 7 : 9
                        }
                    }, {
                        key: "getFrameLength",
                        value: function (e) {
                            return (3 & e[3]) << 11 | e[4] << 3 | (224 & e[5]) >>> 5
                        }
                    }, {
                        key: "isAACPattern",
                        value: function (e) {
                            return 255 === e[0] && 240 == (240 & e[1]) && 0 == (6 & e[1])
                        }
                    }, {
                        key: "extractAAC",
                        value: function (e) {
                            var t, n, r = 0, i = e.byteLength, a = [];
                            if (!this.isAACPattern(e))
                                return Tt("Invalid ADTS audio format"),
                                    a;
                            for (t = this.getHeaderLength(e),
                                 this.aacHeader || (this.aacHeader = e.subarray(0, t)); r < i;)
                                n = this.getFrameLength(e),
                                    a.push(e.subarray(t, n)),
                                    e = e.slice(n),
                                    r += n;
                            return a
                        }
                    }, {
                        key: "setAACConfig",
                        value: function () {
                            var e, t, n, r = new Uint8Array(2), i = this.getAACHeaderData;
                            i && (e = 1 + ((192 & i[2]) >>> 6),
                                t = (60 & i[2]) >>> 2,
                                n = (1 & i[2]) << 2,
                                n |= (192 & i[3]) >>> 6,
                                r[0] = e << 3,
                                r[0] |= (14 & t) >> 1,
                                r[1] |= (1 & t) << 7,
                                r[1] |= n << 3,
                                this.track.codec = "mp4a.40." + e,
                                this.track.channelCount = n,
                                this.track.config = r,
                                this.remuxer.readyToDecode = !0)
                        }
                    }]),
                        e
                }()
                    , Ot = 1
                    , Mt = function () {
                    function e() {
                        i()(this, e),
                            this.seq = 1
                    }

                    return o()(e, [{
                        key: "flush",
                        value: function () {
                            this.seq++,
                                this.mp4track.len = 0,
                                this.mp4track.samples = []
                        }
                    }, {
                        key: "isReady",
                        value: function () {
                            return !(!this.readyToDecode || !this.samples.length) || null
                        }
                    }], [{
                        key: "getTrackID",
                        value: function () {
                            return Ot++
                        }
                    }]),
                        e
                }()
                    , It = function (e) {
                    c()(n, e);
                    var t = _t(n);

                    function n() {
                        var e;
                        return i()(this, n),
                            (e = t.call(this)).readyToDecode = !1,
                            e.nextDts = 0,
                            e.dts = 0,
                            e.timescale = 1e3,
                            e.mp4track = {
                                id: Mt.getTrackID(),
                                type: "audio",
                                channelCount: 0,
                                len: 0,
                                fragmented: !0,
                                timescale: e.timescale,
                                duration: e.timescale,
                                samples: [],
                                config: "",
                                codec: ""
                            },
                            e.samples = [],
                            e.aac = new Dt(u()(e)),
                            e
                    }

                    return o()(n, [{
                        key: "resetTrack",
                        value: function () {
                            this.readyToDecode = !1,
                                this.mp4track.codec = "",
                                this.mp4track.channelCount = "",
                                this.mp4track.config = "",
                                this.mp4track.timescale = this.timescale
                        }
                    }, {
                        key: "remux",
                        value: function (e) {
                            var t, n, r, i = Pt(e);
                            try {
                                for (i.s(); !(r = i.n()).done;) {
                                    var a = r.value;
                                    t = (n = a.units).byteLength,
                                        this.samples.push({
                                            units: n,
                                            size: t,
                                            duration: a.duration
                                        }),
                                        this.mp4track.len += t,
                                    this.readyToDecode || this.aac.setAACConfig()
                                }
                            } catch (e) {
                                i.e(e)
                            } finally {
                                i.f()
                            }
                        }
                    }, {
                        key: "getPayload",
                        value: function () {
                            if (!this.isReady())
                                return null;
                            var e, t, n = new Uint8Array(this.mp4track.len), r = 0, i = this.mp4track.samples;
                            for (this.dts = this.nextDts; this.samples.length;) {
                                var a = this.samples.shift();
                                (t = a.duration) <= 0 ? (Bt("remuxer: invalid sample duration at DTS: ".concat(this.nextDts, " :").concat(t)),
                                    this.mp4track.len -= a.size) : (this.nextDts += t,
                                    e = {
                                        size: a.size,
                                        duration: t,
                                        cts: 0,
                                        flags: {
                                            isLeading: 0,
                                            isDependedOn: 0,
                                            hasRedundancy: 0,
                                            degradPrio: 0,
                                            dependsOn: 1
                                        }
                                    },
                                    n.set(a.units, r),
                                    r += a.size,
                                    i.push(e))
                            }
                            return i.length ? new Uint8Array(n.buffer, 0, this.mp4track.len) : null
                        }
                    }]),
                        n
                }(Mt)
                    , Nt = function (e) {
                    c()(n, e);
                    var t = _t(n);

                    function n() {
                        var e;
                        return i()(this, n),
                            (e = t.call(this)).readyToDecode = !1,
                            e.nextDts = 0,
                            e.dts = 0,
                            e.timescale = 1e3,
                            e.mp4track = {
                                id: Mt.getTrackID(),
                                type: "video",
                                len: 0,
                                fragmented: !0,
                                sps: "",
                                pps: "",
                                width: 0,
                                height: 0,
                                timescale: e.timescale,
                                duration: e.timescale,
                                samples: []
                            },
                            e.samples = [],
                            e.h264 = new Ct(u()(e)),
                            e
                    }

                    return o()(n, [{
                        key: "resetTrack",
                        value: function () {
                            this.readyToDecode = !1,
                                this.mp4track.sps = "",
                                this.mp4track.pps = ""
                        }
                    }, {
                        key: "remux",
                        value: function (e) {
                            var t, n, r, i, a, o, s = Pt(e);
                            try {
                                for (s.s(); !(o = s.n()).done;) {
                                    t = o.value,
                                        n = [],
                                        i = 0,
                                        a = !1;
                                    var u, l = Pt(t.units);
                                    try {
                                        for (l.s(); !(u = l.n()).done;)
                                            r = u.value,
                                            this.h264.parseNAL(r) && (n.push(r),
                                                i += r.getSize(),
                                            a || (a = r.isKeyframe()))
                                    } catch (e) {
                                        l.e(e)
                                    } finally {
                                        l.f()
                                    }
                                    n.length > 0 && this.readyToDecode && (this.mp4track.len += i,
                                        this.samples.push({
                                            units: n,
                                            size: i,
                                            keyFrame: a,
                                            duration: t.duration
                                        }))
                                }
                            } catch (e) {
                                s.e(e)
                            } finally {
                                s.f()
                            }
                        }
                    }, {
                        key: "getPayload",
                        value: function () {
                            if (!this.isReady())
                                return null;
                            var e, t, n = new Uint8Array(this.mp4track.len), r = 0, i = this.mp4track.samples;
                            for (this.dts = this.nextDts; this.samples.length;) {
                                var a = this.samples.shift()
                                    , o = a.units;
                                if ((t = a.duration) <= 0)
                                    Bt("remuxer: invalid sample duration at DTS: ".concat(this.nextDts, " :").concat(t)),
                                        this.mp4track.len -= a.size;
                                else {
                                    this.nextDts += t,
                                        e = {
                                            size: a.size,
                                            duration: t,
                                            cts: 0,
                                            flags: {
                                                isLeading: 0,
                                                isDependedOn: 0,
                                                hasRedundancy: 0,
                                                degradPrio: 0,
                                                isNonSync: a.keyFrame ? 0 : 1,
                                                dependsOn: a.keyFrame ? 2 : 1
                                            }
                                        };
                                    var s, u = Pt(o);
                                    try {
                                        for (u.s(); !(s = u.n()).done;) {
                                            var l = s.value;
                                            n.set(l.getData(), r),
                                                r += l.getSize()
                                        }
                                    } catch (e) {
                                        u.e(e)
                                    } finally {
                                        u.f()
                                    }
                                    i.push(e)
                                }
                            }
                            return i.length ? new Uint8Array(n.buffer, 0, this.mp4track.len) : null
                        }
                    }]),
                        n
                }(Mt);

                function Ut(e, t) {
                    var n = new Uint8Array((0 | e.byteLength) + (0 | t.byteLength));
                    return n.set(e, 0),
                        n.set(t, 0 | e.byteLength),
                        n
                }

                var Ft = function (e) {
                    c()(n, e);
                    var t = _t(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            (r = t.call(this, "remuxer")).initialized = !1,
                            r.trackTypes = [],
                            r.tracks = {},
                            r.mediaDuration = e ? 1 / 0 : 1e3,
                            r
                    }

                    return o()(n, [{
                        key: "addTrack",
                        value: function (e) {
                            "video" !== e && "both" !== e || (this.tracks.video = new Nt,
                                this.trackTypes.push("video")),
                            "audio" !== e && "both" !== e || (this.tracks.audio = new It,
                                this.trackTypes.push("audio"))
                        }
                    }, {
                        key: "reset",
                        value: function () {
                            var e, t = Pt(this.trackTypes);
                            try {
                                for (t.s(); !(e = t.n()).done;) {
                                    var n = e.value;
                                    this.tracks[n].resetTrack()
                                }
                            } catch (e) {
                                t.e(e)
                            } finally {
                                t.f()
                            }
                            this.initialized = !1
                        }
                    }, {
                        key: "destroy",
                        value: function () {
                            this.tracks = {},
                                this.offAll()
                        }
                    }, {
                        key: "flush",
                        value: function () {
                            if (this.initialized) {
                                var e, t = Pt(this.trackTypes);
                                try {
                                    for (t.s(); !(e = t.n()).done;) {
                                        var n = e.value
                                            , r = this.tracks[n]
                                            , i = r.getPayload();
                                        if (i && i.byteLength) {
                                            var a = {
                                                type: n,
                                                payload: Ut(At.moof(r.seq, r.dts, r.mp4track), At.mdat(i)),
                                                dts: r.dts
                                            };
                                            this.dispatch("buffer", a);
                                            var o = (f = r.dts / 1e3,
                                                d = void 0,
                                                p = void 0,
                                                y = void 0,
                                                v = void 0,
                                                v = "",
                                                d = Math.floor(f),
                                            (p = parseInt(d / 3600, 10) % 24) > 0 && (v += (p < 10 ? "0" + p : p) + ":"),
                                                v += ((y = parseInt(d / 60, 10) % 60) < 10 ? "0" + y : y) + ":" + ((d = d < 0 ? 0 : d % 60) < 10 ? "0" + d : d));
                                            Bt("put segment (".concat(n, "): ").concat(r.seq, " dts: ").concat(r.dts, " samples: ").concat(r.mp4track.samples.length, " second: ").concat(o)),
                                                r.flush()
                                        }
                                    }
                                } catch (e) {
                                    t.e(e)
                                } finally {
                                    t.f()
                                }
                            } else if (this.isReady()) {
                                this.dispatch("ready");
                                var s, u = Pt(this.trackTypes);
                                try {
                                    for (u.s(); !(s = u.n()).done;) {
                                        var l = s.value
                                            , c = this.tracks[l]
                                            , h = {
                                            type: l,
                                            payload: At.initSegment([c.mp4track], this.mediaDuration, c.mp4track.timescale)
                                        };
                                        this.dispatch("buffer", h)
                                    }
                                } catch (e) {
                                    u.e(e)
                                } finally {
                                    u.f()
                                }
                                Bt("Initial segment generated."),
                                    this.initialized = !0
                            }
                            var f, d, p, y, v
                        }
                    }, {
                        key: "isReady",
                        value: function () {
                            var e, t = Pt(this.trackTypes);
                            try {
                                for (t.s(); !(e = t.n()).done;) {
                                    var n = e.value;
                                    if (!this.tracks[n].readyToDecode || !this.tracks[n].samples.length)
                                        return !1
                                }
                            } catch (e) {
                                t.e(e)
                            } finally {
                                t.f()
                            }
                            return !0
                        }
                    }, {
                        key: "remux",
                        value: function (e) {
                            var t, n = Pt(this.trackTypes);
                            try {
                                for (n.s(); !(t = n.n()).done;) {
                                    var r = t.value
                                        , i = e[r];
                                    "audio" === r && this.tracks.video && !this.tracks.video.readyToDecode || i.length > 0 && this.tracks[r].remux(i)
                                }
                            } catch (e) {
                                n.e(e)
                            } finally {
                                n.f()
                            }
                            this.flush()
                        }
                    }]),
                        n
                }(Rt)
                    , Ht = function (e) {
                    c()(n, e);
                    var t = _t(n);

                    function n(e, r) {
                        var a;
                        return i()(this, n),
                            (a = t.call(this, "buffer")).type = r,
                            a.queue = new Uint8Array,
                            a.cleaning = !1,
                            a.pendingCleaning = 0,
                            a.cleanOffset = 30,
                            a.cleanRanges = [],
                            a.sourceBuffer = e,
                            a.sourceBuffer.addEventListener("updateend", (function () {
                                    a.dispatch("updateend", Date.now()),
                                    a.pendingCleaning > 0 && (a.initCleanup(a.pendingCleaning),
                                        a.pendingCleaning = 0),
                                        a.cleaning = !1,
                                    a.cleanRanges.length && a.doCleanup()
                                }
                            )),
                            a.sourceBuffer.addEventListener("error", (function (e) {
                                    a.dispatch("error", {
                                        type: a.type,
                                        name: "buffer",
                                        error: e
                                    })
                                }
                            )),
                            a
                    }

                    return o()(n, [{
                        key: "destroy",
                        value: function () {
                            this.queue = null,
                                this.sourceBuffer = null,
                                this.offAll()
                        }
                    }, {
                        key: "doCleanup",
                        value: function () {
                            if (this.cleanRanges.length) {
                                var e = this.cleanRanges.shift();
                                Bt("".concat(this.type, " remove range [").concat(e[0], " - ").concat(e[1], ")")),
                                    this.cleaning = !0,
                                    this.sourceBuffer.remove(e[0], e[1]),
                                    this.dispatch("clearBuffer")
                            } else
                                this.cleaning = !1
                        }
                    }, {
                        key: "initCleanup",
                        value: function (e) {
                            if (this.sourceBuffer.updating)
                                this.pendingCleaning = e;
                            else if (this.sourceBuffer.buffered && this.sourceBuffer.buffered.length && !this.cleaning) {
                                for (var t = 0; t < this.sourceBuffer.buffered.length; ++t) {
                                    var n = this.sourceBuffer.buffered.start(t)
                                        , r = this.sourceBuffer.buffered.end(t);
                                    e - n > this.cleanOffset && n < (r = e - this.cleanOffset) && this.cleanRanges.push([n, r])
                                }
                                this.doCleanup()
                            }
                        }
                    }, {
                        key: "doAppend",
                        value: function () {
                            if (this.queue.length && !this.sourceBuffer.updating)
                                try {
                                    this.sourceBuffer.appendBuffer(this.queue),
                                        this.queue = new Uint8Array
                                } catch (e) {
                                    if ("QuotaExceededError" === e.name)
                                        return Bt("".concat(this.type, " buffer quota full")),
                                            void this.dispatch("error", {
                                                type: this.type,
                                                name: "QuotaExceeded",
                                                error: "buffer error"
                                            });
                                    Tt("Error occured while appending ".concat(this.type, " buffer -  ").concat(e.name, ": ").concat(e.message)),
                                        this.dispatch("error", {
                                            type: this.type,
                                            name: "unexpectedError",
                                            error: "buffer error"
                                        })
                                }
                        }
                    }, {
                        key: "feed",
                        value: function (e) {
                            this.queue = Ut(this.queue, e)
                        }
                    }]),
                        n
                }(Rt);
                window.MediaSource = window.MediaSource || window.WebKitMediaSource;
                var jt = function (e) {
                    c()(n, e);
                    var t = _t(n);

                    function n(e) {
                        var r;
                        i()(this, n),
                            r = t.call(this, "jmuxer"),
                            window.MediaSource = window.MediaSource || window.WebKitMediaSource;
                        if (r.options = Object.assign({}, {
                            node: "",
                            mode: "both",
                            flushingTime: 1500,
                            clearBuffer: !0,
                            onReady: null,
                            fps: 30,
                            debug: !1,
                            onClearBuffer: null
                        }, e),
                        r.options.debug && (bt = console.log,
                            kt = console.error),
                        "string" == typeof r.options.node && "" == r.options.node && Tt("no video element were found to render, provide a valid video element"),
                        r.options.fps || (r.options.fps = 30),
                            r.frameDuration = 1e3 / r.options.fps | 0,
                            r.node = "string" == typeof r.options.node ? document.getElementById(r.options.node) : r.options.node,
                            r.sourceBuffers = {},
                            r.isMSESupported = !!window.MediaSource,
                            !r.isMSESupported)
                            throw "Oops! Browser does not support media source extension.";
                        return r.setupMSE(),
                            r.remuxController = new Ft(r.options.clearBuffer),
                            r.remuxController.addTrack(r.options.mode),
                        "audio" === r.options.mode && (r.aacParser = r.remuxController.tracks.audio.aac),
                            r.mseReady = !1,
                            r.lastCleaningTime = Date.now(),
                            r.keyframeCache = [],
                            r.frameCounter = 0,
                            r.remuxController.on("buffer", r.onBuffer.bind(u()(r))),
                            r.remuxController.on("ready", r.createBuffer.bind(u()(r))),
                            r.startInterval(),
                            r
                    }

                    return o()(n, [{
                        key: "setupMSE",
                        value: function () {
                            this.mediaSource = new MediaSource,
                                this.node.src = URL.createObjectURL(this.mediaSource),
                                this.mediaSource.addEventListener("sourceopen", this.onMSEOpen.bind(this)),
                                this.mediaSource.addEventListener("sourceclose", this.onMSEClose.bind(this)),
                                this.mediaSource.addEventListener("webkitsourceopen", this.onMSEOpen.bind(this)),
                                this.mediaSource.addEventListener("webkitsourceclose", this.onMSEClose.bind(this))
                        }
                    }, {
                        key: "feed",
                        value: function (e) {
                            var t, n, r, i = !1, a = {
                                video: [],
                                audio: []
                            };
                            e && this.remuxController && (r = e.duration ? parseInt(e.duration) : 0,
                            e.video && (t = Ct.extractNALu(e.video)).length > 0 && (a.video = this.getVideoFrames(t, r),
                                i = !0),
                            e.audio && (n = this.aacParser.extractAAC(e.audio)).length > 0 && (a.audio = this.getAudioFrames(n, r),
                                i = !0),
                                i ? this.remuxController.remux(a) : Tt("Input object must have video and/or audio property. Make sure it is not empty and valid typed array"))
                        }
                    }, {
                        key: "getVideoFrames",
                        value: function (e, t) {
                            var n, r, i, a, o = [], s = [], u = 0, l = [], c = Pt(e);
                            try {
                                for (c.s(); !(a = c.n()).done;)
                                    n = a.value,
                                        r = new Et(n),
                                        o.push(r),
                                    r.type() !== Et.IDR && r.type() !== Et.NDR || (s.push({
                                        units: o
                                    }),
                                        o = [],
                                    this.options.clearBuffer && (r.type() === Et.IDR && l.push(this.frameCounter),
                                        this.frameCounter++))
                            } catch (e) {
                                c.e(e)
                            } finally {
                                c.f()
                            }
                            return t ? (i = t / s.length | 0,
                                u = t - i * s.length) : i = this.frameDuration,
                                s.map((function (e) {
                                        e.duration = u > 0 ? i + 1 : i,
                                        0 !== u && u--
                                    }
                                )),
                            this.options.clearBuffer && (l = l.map((function (e) {
                                    return e * i / 1e3
                                }
                            )),
                                this.keyframeCache = this.keyframeCache.concat(l)),
                                s
                        }
                    }, {
                        key: "getAudioFrames",
                        value: function (e, t) {
                            var n, r, i, a = [], o = 0, s = Pt(e);
                            try {
                                for (s.s(); !(i = s.n()).done;)
                                    n = i.value,
                                        a.push({
                                            units: n
                                        })
                            } catch (e) {
                                s.e(e)
                            } finally {
                                s.f()
                            }
                            return t ? (r = t / a.length | 0,
                                o = t - r * a.length) : r = this.frameDuration,
                                a.map((function (e) {
                                        e.duration = o > 0 ? r + 1 : r,
                                        0 !== o && o--
                                    }
                                )),
                                a
                        }
                    }, {
                        key: "destroy",
                        value: function () {
                            if (this.aacParser = null,
                                this.stopInterval(),
                                this.mediaSource) {
                                try {
                                    this.bufferControllers && (this.mediaSource.endOfStream(),
                                        this.removeSourceBuffer())
                                } catch (e) {
                                    Tt("mediasource is not available to end ".concat(e.message))
                                }
                                this.mediaSource = null
                            }
                            if (this.remuxController && (this.remuxController.destroy(),
                                this.remuxController = null),
                                this.bufferControllers) {
                                for (var e in this.bufferControllers)
                                    this.bufferControllers[e].destroy();
                                this.bufferControllers = null
                            }
                            this.node = !1,
                                this.mseReady = !1,
                                this.videoStarted = !1
                        }
                    }, {
                        key: "createBuffer",
                        value: function () {
                            if (this.mseReady && this.remuxController && this.remuxController.isReady() && !this.bufferControllers)
                                for (var e in this.bufferControllers = {},
                                    this.remuxController.tracks) {
                                    var t = this.remuxController.tracks[e];
                                    if (!n.isSupported("".concat(e, '/mp4; codecs="').concat(t.mp4track.codec, '"')))
                                        return Tt("Browser does not support codec"),
                                            !1;
                                    var r = this.mediaSource.addSourceBuffer("".concat(e, '/mp4; codecs="').concat(t.mp4track.codec, '"'));
                                    this.bufferControllers[e] = new Ht(r, e),
                                        this.sourceBuffers[e] = r,
                                        this.bufferControllers[e].on("error", this.onBufferError.bind(this)),
                                        this.bufferControllers[e].on("clearBuffer", this.onClearBuffer.bind(this)),
                                        this.bufferControllers[e].on("updateend", this.onUpdateEnd.bind(this))
                                }
                        }
                    }, {
                        key: "onUpdateEnd",
                        value: function (e) {
                            "function" == typeof this.options.onUpdateEnd && this.options.onUpdateEnd(e)
                        }
                    }, {
                        key: "startInterval",
                        value: function () {
                            var e = this;
                            this.interval = setInterval((function () {
                                    e.bufferControllers && (e.releaseBuffer(),
                                        e.clearBuffer())
                                }
                            ), this.options.flushingTime)
                        }
                    }, {
                        key: "stopInterval",
                        value: function () {
                            this.interval && clearInterval(this.interval)
                        }
                    }, {
                        key: "releaseBuffer",
                        value: function () {
                            for (var e in this.bufferControllers)
                                this.bufferControllers[e].doAppend()
                        }
                    }, {
                        key: "getSafeBufferClearLimit",
                        value: function (e) {
                            for (var t, n = "audio" === this.options.mode && e || 0, r = 0; r < this.keyframeCache.length && !(this.keyframeCache[r] >= e); r++)
                                t = this.keyframeCache[r];
                            return t && (this.keyframeCache = this.keyframeCache.filter((function (e) {
                                    return e < t && (n = e),
                                    e >= t
                                }
                            ))),
                                n
                        }
                    }, {
                        key: "clearBuffer",
                        value: function () {
                            if (this.options.clearBuffer && Date.now() - this.lastCleaningTime > 1e4) {
                                for (var e in this.bufferControllers) {
                                    var t = this.getSafeBufferClearLimit(this.node.currentTime);
                                    this.bufferControllers[e].initCleanup(t)
                                }
                                this.lastCleaningTime = Date.now()
                            }
                        }
                    }, {
                        key: "onBuffer",
                        value: function (e) {
                            this.bufferControllers && this.bufferControllers[e.type] && this.bufferControllers[e.type].feed(e.payload)
                        }
                    }, {
                        key: "onClearBuffer",
                        value: function () {
                            "function" == typeof this.options.onClearBuffer && this.options.onClearBuffer()
                        }
                    }, {
                        key: "removeSourceBuffer",
                        value: function () {
                            if (this.mediaSource) {
                                var e = this.sourceBuffers;
                                for (var t in e)
                                    this.mediaSource.removeSourceBuffer(e[t])
                            }
                        }
                    }, {
                        key: "onMSEOpen",
                        value: function () {
                            this.mseReady = !0,
                                this.createBuffer(),
                            "function" == typeof this.options.onReady && (this.options.onReady(),
                                this.options.onReady = null)
                        }
                    }, {
                        key: "onMSEClose",
                        value: function () {
                            this.mseReady = !1,
                                this.videoStarted = !1
                        }
                    }, {
                        key: "onBufferError",
                        value: function (e) {
                            if ("QuotaExceeded" != e.name) {
                                if (this.mediaSource.sourceBuffers.length > 0 && this.sourceBuffers[e.type] && this.mediaSource.removeSourceBuffer(this.sourceBuffers[e.type]),
                                0 == this.mediaSource.sourceBuffers.length)
                                    try {
                                        this.mediaSource.endOfStream()
                                    } catch (e) {
                                        Tt("mediasource is not available to end")
                                    }
                            } else
                                this.bufferControllers[e.type].initCleanup(this.node.currentTime)
                        }
                    }], [{
                        key: "isSupported",
                        value: function (e) {
                            return window.MediaSource && window.MediaSource.isTypeSupported(e)
                        }
                    }]),
                        n
                }(Rt);

                function zt(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Wt = function (e) {
                    c()(n, e);
                    var t = zt(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this, e),
                            v()(u()(r), "source", []),
                            v()(u()(r), "onPlay", void 0),
                            r.source = e.source,
                            r.onPlay = e.onPlay,
                            r.init(),
                            r
                    }

                    return o()(n, [{
                        key: "init",
                        value: function () {
                        }
                    }, {
                        key: "extract",
                        value: function (e, t) {
                            for (var n = this.provide(t), r = 0; r < n.size; r++)
                                e[2 * r] = n.left[r],
                                    e[2 * r + 1] = n.right[r];
                            return n.size
                        }
                    }, {
                        key: "provide",
                        value: function (e) {
                            for (var t = e, n = new Float32Array(t), r = new Float32Array(t), i = 0, a = 0, o = 0; this.source.length > 0;) {
                                var s = this.source.shift()
                                    , u = s.loadedPosition || 0;
                                a = s.startTime + s.duration * u / s.length;
                                var l = Math.min(s.length - u, t - i)
                                    , c = s.getChannelData(0)
                                    , h = s.numberOfChannels > 1 ? s.getChannelData(1) : s.getChannelData(0);
                                if (n.set(c.slice(u, u + l), i),
                                    r.set(h.slice(u, u + l), i),
                                    o += l,
                                    i += l,
                                (u += l) < s.length) {
                                    s.loadedPosition = u,
                                        this.source.unshift(s);
                                    break
                                }
                            }
                            return this.onPlay && this.onPlay(a),
                                {
                                    left: n,
                                    right: r,
                                    size: o
                                }
                        }
                    }]),
                        n
                }(N);

                function Vt(e, t) {
                    if (!(e instanceof t))
                        throw new TypeError("Cannot call a class as a function")
                }

                function Xt(e, t) {
                    for (var n = 0; n < t.length; n++) {
                        var r = t[n];
                        r.enumerable = r.enumerable || !1,
                            r.configurable = !0,
                        "value" in r && (r.writable = !0),
                            Object.defineProperty(e, r.key, r)
                    }
                }

                function Yt(e, t, n) {
                    return t && Xt(e.prototype, t),
                    n && Xt(e, n),
                        e
                }

                function Gt(e, t) {
                    if ("function" != typeof t && null !== t)
                        throw new TypeError("Super expression must either be null or a function");
                    e.prototype = Object.create(t && t.prototype, {
                        constructor: {
                            value: e,
                            writable: !0,
                            configurable: !0
                        }
                    }),
                    t && Kt(e, t)
                }

                function $t(e) {
                    return ($t = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
                            return e.__proto__ || Object.getPrototypeOf(e)
                        }
                    )(e)
                }

                function Kt(e, t) {
                    return (Kt = Object.setPrototypeOf || function (e, t) {
                            return e.__proto__ = t,
                                e
                        }
                    )(e, t)
                }

                function qt(e, t) {
                    return !t || "object" !== S()(t) && "function" != typeof t ? function (e) {
                        if (void 0 === e)
                            throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                        return e
                    }(e) : t
                }

                function Qt(e, t, n) {
                    return (Qt = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function (e, t, n) {
                            var r = function (e, t) {
                                for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = $t(e));)
                                    ;
                                return e
                            }(e, t);
                            if (r) {
                                var i = Object.getOwnPropertyDescriptor(r, t);
                                return i.get ? i.get.call(n) : i.value
                            }
                        }
                    )(e, t, n || e)
                }

                var Zt = function () {
                        function e() {
                            Vt(this, e),
                                this._vector = new Float32Array,
                                this._position = 0,
                                this._frameCount = 0
                        }

                        return Yt(e, [{
                            key: "clear",
                            value: function () {
                                this.receive(this._frameCount),
                                    this.rewind()
                            }
                        }, {
                            key: "put",
                            value: function (e) {
                                this._frameCount += e
                            }
                        }, {
                            key: "putSamples",
                            value: function (e, t) {
                                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0
                                    , r = 2 * (t = t || 0);
                                n >= 0 || (n = (e.length - r) / 2);
                                var i = 2 * n;
                                this.ensureCapacity(n + this._frameCount);
                                var a = this.endIndex;
                                this.vector.set(e.subarray(r, r + i), a),
                                    this._frameCount += n
                            }
                        }, {
                            key: "putBuffer",
                            value: function (e, t) {
                                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
                                t = t || 0,
                                n >= 0 || (n = e.frameCount - t),
                                    this.putSamples(e.vector, e.position + t, n)
                            }
                        }, {
                            key: "receive",
                            value: function (e) {
                                e >= 0 && !(e > this._frameCount) || (e = this.frameCount),
                                    this._frameCount -= e,
                                    this._position += e
                            }
                        }, {
                            key: "receiveSamples",
                            value: function (e) {
                                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0
                                    , n = 2 * t
                                    , r = this.startIndex;
                                e.set(this._vector.subarray(r, r + n)),
                                    this.receive(t)
                            }
                        }, {
                            key: "extract",
                            value: function (e) {
                                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0
                                    , n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0
                                    , r = this.startIndex + 2 * t
                                    , i = 2 * n;
                                e.set(this._vector.subarray(r, r + i))
                            }
                        }, {
                            key: "ensureCapacity",
                            value: function () {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0
                                    , t = parseInt(2 * e);
                                if (this._vector.length < t) {
                                    var n = new Float32Array(t);
                                    n.set(this._vector.subarray(this.startIndex, this.endIndex)),
                                        this._vector = n,
                                        this._position = 0
                                } else
                                    this.rewind()
                            }
                        }, {
                            key: "ensureAdditionalCapacity",
                            value: function () {
                                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;
                                this.ensureCapacity(this._frameCount + e)
                            }
                        }, {
                            key: "rewind",
                            value: function () {
                                this._position > 0 && (this._vector.set(this._vector.subarray(this.startIndex, this.endIndex)),
                                    this._position = 0)
                            }
                        }, {
                            key: "vector",
                            get: function () {
                                return this._vector
                            }
                        }, {
                            key: "position",
                            get: function () {
                                return this._position
                            }
                        }, {
                            key: "startIndex",
                            get: function () {
                                return 2 * this._position
                            }
                        }, {
                            key: "frameCount",
                            get: function () {
                                return this._frameCount
                            }
                        }, {
                            key: "endIndex",
                            get: function () {
                                return 2 * (this._position + this._frameCount)
                            }
                        }]),
                            e
                    }()
                    , Jt = function () {
                        function e(t) {
                            Vt(this, e),
                                t ? (this._inputBuffer = new Zt,
                                    this._outputBuffer = new Zt) : this._inputBuffer = this._outputBuffer = null
                        }

                        return Yt(e, [{
                            key: "clear",
                            value: function () {
                                this._inputBuffer.clear(),
                                    this._outputBuffer.clear()
                            }
                        }, {
                            key: "inputBuffer",
                            get: function () {
                                return this._inputBuffer
                            },
                            set: function (e) {
                                this._inputBuffer = e
                            }
                        }, {
                            key: "outputBuffer",
                            get: function () {
                                return this._outputBuffer
                            },
                            set: function (e) {
                                this._outputBuffer = e
                            }
                        }]),
                            e
                    }()
                    , en = function (e) {
                        function t(e) {
                            var n;
                            return Vt(this, t),
                                (n = qt(this, $t(t).call(this, e))).reset(),
                                n._rate = 1,
                                n
                        }

                        return Gt(t, e),
                            Yt(t, [{
                                key: "reset",
                                value: function () {
                                    this.slopeCount = 0,
                                        this.prevSampleL = 0,
                                        this.prevSampleR = 0
                                }
                            }, {
                                key: "clone",
                                value: function () {
                                    var e = new t;
                                    return e.rate = this._rate,
                                        e
                                }
                            }, {
                                key: "process",
                                value: function () {
                                    var e = this._inputBuffer.frameCount;
                                    this._outputBuffer.ensureAdditionalCapacity(e / this._rate + 1);
                                    var t = this.transpose(e);
                                    this._inputBuffer.receive(),
                                        this._outputBuffer.put(t)
                                }
                            }, {
                                key: "transpose",
                                value: function () {
                                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;
                                    if (0 === e)
                                        return 0;
                                    for (var t = this._inputBuffer.vector, n = this._inputBuffer.startIndex, r = this._outputBuffer.vector, i = this._outputBuffer.endIndex, a = 0, o = 0; this.slopeCount < 1;)
                                        r[i + 2 * o] = (1 - this.slopeCount) * this.prevSampleL + this.slopeCount * t[n],
                                            r[i + 2 * o + 1] = (1 - this.slopeCount) * this.prevSampleR + this.slopeCount * t[n + 1],
                                            o += 1,
                                            this.slopeCount += this._rate;
                                    if (this.slopeCount -= 1,
                                    1 !== e)
                                        e: for (; ;) {
                                            for (; this.slopeCount > 1;)
                                                if (this.slopeCount -= 1,
                                                (a += 1) >= e - 1)
                                                    break e;
                                            var s = n + 2 * a;
                                            r[i + 2 * o] = (1 - this.slopeCount) * t[s] + this.slopeCount * t[s + 2],
                                                r[i + 2 * o + 1] = (1 - this.slopeCount) * t[s + 1] + this.slopeCount * t[s + 3],
                                                o += 1,
                                                this.slopeCount += this._rate
                                        }
                                    return this.prevSampleL = t[n + 2 * e - 2],
                                        this.prevSampleR = t[n + 2 * e - 1],
                                        o
                                }
                            }, {
                                key: "rate",
                                set: function (e) {
                                    this._rate = e
                                }
                            }]),
                            t
                    }(Jt)
                    , tn = function () {
                        function e(t) {
                            var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1024;
                            Vt(this, e),
                                this._pipe = t,
                                this.inputSize = n
                        }

                        return Yt(e, [{
                            key: "fillInputBuffer",
                            value: function () {
                                throw new Error("fillInputBuffer() not overridden")
                            }
                        }, {
                            key: "fillOutputBuffer",
                            value: function () {
                                for (var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, t = this.inputSize; this.outputBuffer.frameCount < e;) {
                                    var n = t - this.inputBuffer.frameCount;
                                    if (this.fillInputBuffer(n),
                                    this.inputBuffer.frameCount < t)
                                        break;
                                    this._pipe.process()
                                }
                            }
                        }, {
                            key: "clear",
                            value: function () {
                                this._pipe.clear()
                            }
                        }, {
                            key: "pipe",
                            get: function () {
                                return this._pipe
                            }
                        }, {
                            key: "inputBuffer",
                            get: function () {
                                return this._pipe.inputBuffer
                            }
                        }, {
                            key: "outputBuffer",
                            get: function () {
                                return this._pipe.outputBuffer
                            }
                        }]),
                            e
                    }()
                    , nn = function () {
                    }
                    , rn = function (e) {
                        function t(e, n) {
                            var r, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1024,
                                a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : nn;
                            return Vt(this, t),
                                (r = qt(this, $t(t).call(this, n, i))).callback = a,
                                r.sourceSound = e,
                                r.historyBufferSize = 22050,
                                r._sourcePosition = 0,
                                r.outputBufferPosition = 0,
                                r._position = 0,
                                r
                        }

                        return Gt(t, e),
                            Yt(t, [{
                                key: "onEnd",
                                value: function () {
                                    this.callback()
                                }
                            }, {
                                key: "fillInputBuffer",
                                value: function () {
                                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0
                                        , t = new Float32Array(2 * e)
                                        , n = this.sourceSound.extract(t, e, this._sourcePosition);
                                    this._sourcePosition += n,
                                        this.inputBuffer.putSamples(t, 0, n)
                                }
                            }, {
                                key: "extract",
                                value: function (e) {
                                    var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                                    this.fillOutputBuffer(this.outputBufferPosition + t);
                                    var n = Math.min(t, this.outputBuffer.frameCount - this.outputBufferPosition);
                                    this.outputBuffer.extract(e, this.outputBufferPosition, n);
                                    var r = this.outputBufferPosition + n;
                                    return this.outputBufferPosition = Math.min(this.historyBufferSize, r),
                                        this.outputBuffer.receive(Math.max(r - this.historyBufferSize, 0)),
                                        this._position += n,
                                        n
                                }
                            }, {
                                key: "handleSampleData",
                                value: function (e) {
                                    this.extract(e.data, 4096)
                                }
                            }, {
                                key: "clear",
                                value: function () {
                                    Qt($t(t.prototype), "clear", this).call(this),
                                        this.outputBufferPosition = 0
                                }
                            }, {
                                key: "position",
                                get: function () {
                                    return this._position
                                },
                                set: function (e) {
                                    if (e > this._position)
                                        throw new RangeError("New position may not be greater than current position");
                                    var t = this.outputBufferPosition - (this._position - e);
                                    if (t < 0)
                                        throw new RangeError("New position falls outside of history buffer");
                                    this.outputBufferPosition = t,
                                        this._position = e
                                }
                            }, {
                                key: "sourcePosition",
                                get: function () {
                                    return this._sourcePosition
                                },
                                set: function (e) {
                                    this.clear(),
                                        this._sourcePosition = e
                                }
                            }]),
                            t
                    }(tn)
                    ,
                    an = [[124, 186, 248, 310, 372, 434, 496, 558, 620, 682, 744, 806, 868, 930, 992, 1054, 1116, 1178, 1240, 1302, 1364, 1426, 1488, 0], [-100, -75, -50, -25, 25, 50, 75, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-20, -15, -10, -5, 5, 10, 15, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-4, -3, -2, -1, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
                    , on = function (e) {
                        function t(e) {
                            var n;
                            return Vt(this, t),
                                (n = qt(this, $t(t).call(this, e)))._quickSeek = !0,
                                n.midBufferDirty = !1,
                                n.midBuffer = null,
                                n.overlapLength = 0,
                                n.autoSeqSetting = !0,
                                n.autoSeekSetting = !0,
                                n._tempo = 1,
                                n.setParameters(44100, 0, 0, 8),
                                n
                        }

                        return Gt(t, e),
                            Yt(t, [{
                                key: "clear",
                                value: function () {
                                    Qt($t(t.prototype), "clear", this).call(this),
                                        this.clearMidBuffer()
                                }
                            }, {
                                key: "clearMidBuffer",
                                value: function () {
                                    this.midBufferDirty && (this.midBufferDirty = !1,
                                        this.midBuffer = null)
                                }
                            }, {
                                key: "setParameters",
                                value: function (e, t, n, r) {
                                    e > 0 && (this.sampleRate = e),
                                    r > 0 && (this.overlapMs = r),
                                        t > 0 ? (this.sequenceMs = t,
                                            this.autoSeqSetting = !1) : this.autoSeqSetting = !0,
                                        n > 0 ? (this.seekWindowMs = n,
                                            this.autoSeekSetting = !1) : this.autoSeekSetting = !0,
                                        this.calculateSequenceParameters(),
                                        this.calculateOverlapLength(this.overlapMs),
                                        this.tempo = this._tempo
                                }
                            }, {
                                key: "calculateOverlapLength",
                                value: function () {
                                    var e, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;
                                    e = (e = this.sampleRate * t / 1e3) < 16 ? 16 : e,
                                        e -= e % 8,
                                        this.overlapLength = e,
                                        this.refMidBuffer = new Float32Array(2 * this.overlapLength),
                                        this.midBuffer = new Float32Array(2 * this.overlapLength)
                                }
                            }, {
                                key: "checkLimits",
                                value: function (e, t, n) {
                                    return e < t ? t : e > n ? n : e
                                }
                            }, {
                                key: "calculateSequenceParameters",
                                value: function () {
                                    var e, t;
                                    this.autoSeqSetting && (e = 150 + -50 * this._tempo,
                                        e = this.checkLimits(e, 50, 125),
                                        this.sequenceMs = Math.floor(e + .5)),
                                    this.autoSeekSetting && (t = 25 - -10 / 1.5 * .5 + -10 / 1.5 * this._tempo,
                                        t = this.checkLimits(t, 15, 25),
                                        this.seekWindowMs = Math.floor(t + .5)),
                                        this.seekWindowLength = Math.floor(this.sampleRate * this.sequenceMs / 1e3),
                                        this.seekLength = Math.floor(this.sampleRate * this.seekWindowMs / 1e3)
                                }
                            }, {
                                key: "clone",
                                value: function () {
                                    var e = new t;
                                    return e.tempo = this._tempo,
                                        e.setParameters(this.sampleRate, this.sequenceMs, this.seekWindowMs, this.overlapMs),
                                        e
                                }
                            }, {
                                key: "seekBestOverlapPosition",
                                value: function () {
                                    return this._quickSeek ? this.seekBestOverlapPositionStereoQuick() : this.seekBestOverlapPositionStereo()
                                }
                            }, {
                                key: "seekBestOverlapPositionStereo",
                                value: function () {
                                    var e, t, n, r = 0;
                                    for (this.preCalculateCorrelationReferenceStereo(),
                                             e = 0,
                                             t = Number.MIN_VALUE; r < this.seekLength; r += 1)
                                        (n = this.calculateCrossCorrelationStereo(2 * r, this.refMidBuffer)) > t && (t = n,
                                            e = r);
                                    return e
                                }
                            }, {
                                key: "seekBestOverlapPositionStereoQuick",
                                value: function () {
                                    var e, t, n, r, i, a = 0;
                                    for (this.preCalculateCorrelationReferenceStereo(),
                                             t = Number.MIN_VALUE,
                                             e = 0,
                                             r = 0,
                                             i = 0; a < 4; a += 1) {
                                        for (var o = 0; an[a][o] && !((i = r + an[a][o]) >= this.seekLength);)
                                            (n = this.calculateCrossCorrelationStereo(2 * i, this.refMidBuffer)) > t && (t = n,
                                                e = i),
                                                o += 1;
                                        r = e
                                    }
                                    return e
                                }
                            }, {
                                key: "preCalculateCorrelationReferenceStereo",
                                value: function () {
                                    for (var e, t, n = 0; n < this.overlapLength; n += 1)
                                        t = n * (this.overlapLength - n),
                                            e = 2 * n,
                                            this.refMidBuffer[e] = this.midBuffer[e] * t,
                                            this.refMidBuffer[e + 1] = this.midBuffer[e + 1] * t
                                }
                            }, {
                                key: "calculateCrossCorrelationStereo",
                                value: function (e, t) {
                                    var n = this._inputBuffer.vector;
                                    e += this._inputBuffer.startIndex;
                                    for (var r, i = 0, a = 2, o = 2 * this.overlapLength; a < o; a += 2)
                                        i += n[r = a + e] * t[a] + n[r + 1] * t[a + 1];
                                    return i
                                }
                            }, {
                                key: "overlap",
                                value: function (e) {
                                    this.overlapStereo(2 * e)
                                }
                            }, {
                                key: "overlapStereo",
                                value: function (e) {
                                    var t = this._inputBuffer.vector;
                                    e += this._inputBuffer.startIndex;
                                    for (var n, r, i, a, o, s = this._outputBuffer.vector, u = this._outputBuffer.endIndex, l = 0, c = 1 / this.overlapLength; l < this.overlapLength; l += 1)
                                        r = (this.overlapLength - l) * c,
                                            i = l * c,
                                            a = (n = 2 * l) + e,
                                            s[(o = n + u) + 0] = t[a + 0] * i + this.midBuffer[n + 0] * r,
                                            s[o + 1] = t[a + 1] * i + this.midBuffer[n + 1] * r
                                }
                            }, {
                                key: "process",
                                value: function () {
                                    var e, t, n;
                                    if (null === this.midBuffer) {
                                        if (this._inputBuffer.frameCount < this.overlapLength)
                                            return;
                                        this.midBuffer = new Float32Array(2 * this.overlapLength),
                                            this._inputBuffer.receiveSamples(this.midBuffer, this.overlapLength)
                                    }
                                    for (; this._inputBuffer.frameCount >= this.sampleReq;) {
                                        e = this.seekBestOverlapPosition(),
                                            this._outputBuffer.ensureAdditionalCapacity(this.overlapLength),
                                            this.overlap(Math.floor(e)),
                                            this._outputBuffer.put(this.overlapLength),
                                        (t = this.seekWindowLength - 2 * this.overlapLength) > 0 && this._outputBuffer.putBuffer(this._inputBuffer, e + this.overlapLength, t);
                                        var r = this._inputBuffer.startIndex + 2 * (e + this.seekWindowLength - this.overlapLength);
                                        this.midBuffer.set(this._inputBuffer.vector.subarray(r, r + 2 * this.overlapLength)),
                                            this.skipFract += this.nominalSkip,
                                            n = Math.floor(this.skipFract),
                                            this.skipFract -= n,
                                            this._inputBuffer.receive(n)
                                    }
                                }
                            }, {
                                key: "tempo",
                                set: function (e) {
                                    var t;
                                    this._tempo = e,
                                        this.calculateSequenceParameters(),
                                        this.nominalSkip = this._tempo * (this.seekWindowLength - this.overlapLength),
                                        this.skipFract = 0,
                                        t = Math.floor(this.nominalSkip + .5),
                                        this.sampleReq = Math.max(t + this.overlapLength, this.seekWindowLength) + this.seekLength
                                },
                                get: function () {
                                    return this._tempo
                                }
                            }, {
                                key: "inputChunkSize",
                                get: function () {
                                    return this.sampleReq
                                }
                            }, {
                                key: "outputChunkSize",
                                get: function () {
                                    return this.overlapLength + Math.max(0, this.seekWindowLength - 2 * this.overlapLength)
                                }
                            }, {
                                key: "quickSeek",
                                set: function (e) {
                                    this._quickSeek = e
                                }
                            }]),
                            t
                    }(Jt)
                    , sn = function (e, t) {
                        return (e > t ? e - t : t - e) > 1e-10
                    }
                    , un = function () {
                        function e() {
                            Vt(this, e),
                                this.transposer = new en(!1),
                                this.stretch = new on(!1),
                                this._inputBuffer = new Zt,
                                this._intermediateBuffer = new Zt,
                                this._outputBuffer = new Zt,
                                this._rate = 0,
                                this._tempo = 0,
                                this.virtualPitch = 1,
                                this.virtualRate = 1,
                                this.virtualTempo = 1,
                                this.calculateEffectiveRateAndTempo()
                        }

                        return Yt(e, [{
                            key: "clear",
                            value: function () {
                                this.transposer.clear(),
                                    this.stretch.clear()
                            }
                        }, {
                            key: "clone",
                            value: function () {
                                var t = new e;
                                return t.rate = this.rate,
                                    t.tempo = this.tempo,
                                    t
                            }
                        }, {
                            key: "calculateEffectiveRateAndTempo",
                            value: function () {
                                var e = this._tempo
                                    , t = this._rate;
                                this._tempo = this.virtualTempo / this.virtualPitch,
                                    this._rate = this.virtualRate * this.virtualPitch,
                                sn(this._tempo, e) && (this.stretch.tempo = this._tempo),
                                sn(this._rate, t) && (this.transposer.rate = this._rate),
                                    this._rate > 1 ? this._outputBuffer != this.transposer.outputBuffer && (this.stretch.inputBuffer = this._inputBuffer,
                                        this.stretch.outputBuffer = this._intermediateBuffer,
                                        this.transposer.inputBuffer = this._intermediateBuffer,
                                        this.transposer.outputBuffer = this._outputBuffer) : this._outputBuffer != this.stretch.outputBuffer && (this.transposer.inputBuffer = this._inputBuffer,
                                        this.transposer.outputBuffer = this._intermediateBuffer,
                                        this.stretch.inputBuffer = this._intermediateBuffer,
                                        this.stretch.outputBuffer = this._outputBuffer)
                            }
                        }, {
                            key: "process",
                            value: function () {
                                this._rate > 1 ? (this.stretch.process(),
                                    this.transposer.process()) : (this.transposer.process(),
                                    this.stretch.process())
                            }
                        }, {
                            key: "rate",
                            get: function () {
                                return this._rate
                            },
                            set: function (e) {
                                this.virtualRate = e,
                                    this.calculateEffectiveRateAndTempo()
                            }
                        }, {
                            key: "rateChange",
                            set: function (e) {
                                this._rate = 1 + .01 * e
                            }
                        }, {
                            key: "tempo",
                            get: function () {
                                return this._tempo
                            },
                            set: function (e) {
                                this.virtualTempo = e,
                                    this.calculateEffectiveRateAndTempo()
                            }
                        }, {
                            key: "tempoChange",
                            set: function (e) {
                                this.tempo = 1 + .01 * e
                            }
                        }, {
                            key: "pitch",
                            set: function (e) {
                                this.virtualPitch = e,
                                    this.calculateEffectiveRateAndTempo()
                            }
                        }, {
                            key: "pitchOctaves",
                            set: function (e) {
                                this.pitch = Math.exp(.69314718056 * e),
                                    this.calculateEffectiveRateAndTempo()
                            }
                        }, {
                            key: "pitchSemitones",
                            set: function (e) {
                                this.pitchOctaves = e / 12
                            }
                        }, {
                            key: "inputBuffer",
                            get: function () {
                                return this._inputBuffer
                            }
                        }, {
                            key: "outputBuffer",
                            get: function () {
                                return this._outputBuffer
                            }
                        }]),
                            e
                    }()
                    , ln = function () {
                        function e(t) {
                            Vt(this, e),
                                this.buffer = t,
                                this._position = 0
                        }

                        return Yt(e, [{
                            key: "extract",
                            value: function (e) {
                                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0
                                    , n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
                                this.position = n;
                                for (var r = this.buffer.getChannelData(0), i = this.dualChannel ? this.buffer.getChannelData(1) : this.buffer.getChannelData(0), a = 0; a < t; a++)
                                    e[2 * a] = r[a + n],
                                        e[2 * a + 1] = i[a + n];
                                return Math.min(t, r.length - n)
                            }
                        }, {
                            key: "dualChannel",
                            get: function () {
                                return this.buffer.numberOfChannels > 1
                            }
                        }, {
                            key: "position",
                            get: function () {
                                return this._position
                            },
                            set: function (e) {
                                this._position = e
                            }
                        }]),
                            e
                    }()
                    , cn = function (e, t) {
                        var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : nn
                            , r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 4096
                            , i = e.createScriptProcessor(r, 2, 2)
                            , a = new Float32Array(2 * r);
                        return i.onaudioprocess = function (e) {
                            var i = e.outputBuffer.getChannelData(0)
                                , o = e.outputBuffer.getChannelData(1)
                                , s = t.extract(a, r);
                            n(t.sourcePosition),
                            0 === s && t.onEnd();
                            for (var u = 0; u < s; u++)
                                i[u] = a[2 * u],
                                    o[u] = a[2 * u + 1]
                        }
                            ,
                            i
                    }
                    , hn = function (e) {
                        var t, n, r, i = Math.floor(e / 60), a = e - 60 * i;
                        return "".concat(i, ":").concat((t = parseInt(a),
                            r = r || "0",
                            (t += "").length >= (n = 2) ? t : new Array(n - t.length + 1).join(r) + t))
                    }
                    , fn = function (e) {
                        var t = this.timePlayed
                            , n = this.sampleRate;
                        if (this.sourcePosition = e,
                            this.timePlayed = e / n,
                        t !== this.timePlayed) {
                            var r = new CustomEvent("play", {
                                detail: {
                                    timePlayed: this.timePlayed,
                                    formattedTimePlayed: this.formattedTimePlayed,
                                    percentagePlayed: this.percentagePlayed
                                }
                            });
                            this._node.dispatchEvent(r)
                        }
                    };
                !function () {
                    function e(t, n, r) {
                        var i = this
                            , a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : nn;
                        Vt(this, e),
                            this._soundtouch = new un;
                        var o = new ln(n);
                        this.timePlayed = 0,
                            this.sourcePosition = 0,
                            this._filter = new rn(o, this._soundtouch, a),
                            this._node = cn(t, this._filter, (function (e) {
                                    return fn.call(i, e)
                                }
                            )),
                            this.tempo = 1,
                            this.rate = 1,
                            this.duration = n.duration,
                            this.sampleRate = t.sampleRate,
                            this.listeners = []
                    }

                    Yt(e, [{
                        key: "connect",
                        value: function (e) {
                            this._node.connect(e)
                        }
                    }, {
                        key: "disconnect",
                        value: function () {
                            this._node.disconnect()
                        }
                    }, {
                        key: "on",
                        value: function (e, t) {
                            this.listeners.push({
                                name: e,
                                cb: t
                            }),
                                this._node.addEventListener(e, (function (e) {
                                        return t(e.detail)
                                    }
                                ))
                        }
                    }, {
                        key: "off",
                        value: function () {
                            var e = this
                                , t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null
                                , n = this.listeners;
                            t && (n = n.filter((function (e) {
                                    return e.name === t
                                }
                            ))),
                                n.forEach((function (t) {
                                        e._node.removeEventListener(t.name, (function (e) {
                                                return t.cb(e.detail)
                                            }
                                        ))
                                    }
                                ))
                        }
                    }, {
                        key: "formattedDuration",
                        get: function () {
                            return hn(this.duration)
                        }
                    }, {
                        key: "formattedTimePlayed",
                        get: function () {
                            return hn(this.timePlayed)
                        }
                    }, {
                        key: "percentagePlayed",
                        get: function () {
                            return 100 * this._filter.sourcePosition / (this.duration * this.sampleRate)
                        },
                        set: function (e) {
                            this._filter.sourcePosition = parseInt(e * this.duration * this.sampleRate)
                        }
                    }, {
                        key: "node",
                        get: function () {
                            return this._node
                        }
                    }, {
                        key: "pitch",
                        set: function (e) {
                            this._soundtouch.pitch = e
                        }
                    }, {
                        key: "pitchSemitones",
                        set: function (e) {
                            this._soundtouch.pitchSemitones = e
                        }
                    }, {
                        key: "rate",
                        set: function (e) {
                            this._soundtouch.rate = e
                        }
                    }, {
                        key: "tempo",
                        set: function (e) {
                            this._soundtouch.tempo = e
                        }
                    }])
                }();

                function dn(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var pn = function (e) {
                    c()(n, e);
                    var t = dn(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this, e),
                            v()(u()(r), "soundTouch", void 0),
                            v()(u()(r), "filter", void 0),
                            v()(u()(r), "bufferSizeLevel", 1),
                        void 0 !== e.bufferSizeLevel && (r.bufferSizeLevel = e.bufferSizeLevel),
                            r.init(e.source),
                            r
                    }

                    return o()(n, [{
                        key: "init",
                        value: function (e) {
                            this.soundTouch = new un,
                                this.soundTouch.tempo = 1,
                                this.soundTouch.rate = 1,
                                this.filter = new rn(e, this.soundTouch, 2048 * Math.pow(2, this.bufferSizeLevel))
                        }
                    }, {
                        key: "rate",
                        set: function (e) {
                            this.soundTouch.tempo = e
                        }
                    }, {
                        key: "provide",
                        value: function (e) {
                            for (var t = new Float32Array(2 * e), n = this.filter.extract(t, e), r = new Float32Array(n), i = new Float32Array(n), a = 0; a < n; a++)
                                r[a] = t[2 * a],
                                    i[a] = t[2 * a + 1];
                            return {
                                size: n,
                                left: r,
                                right: i
                            }
                        }
                    }]),
                        n
                }(N);

                function yn(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var vn = function (e) {
                    c()(n, e);
                    var t = yn(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this, e),
                            v()(u()(r), "currentRate", 1),
                            v()(u()(r), "source", []),
                            v()(u()(r), "commonProcessor", void 0),
                            v()(u()(r), "rateProcessor", void 0),
                            v()(u()(r), "audioTime", 0),
                            r.source = e.source,
                            r.init(),
                        1 !== e.playbackRate && (r.rate = e.playbackRate),
                            r
                    }

                    return o()(n, [{
                        key: "init",
                        value: function () {
                            var e = this;
                            this.commonProcessor = new Wt({
                                source: this.source,
                                onPlay: function (t) {
                                    e.audioTime = t
                                }
                            }),
                                this.rateProcessor = new pn({
                                    source: this.commonProcessor,
                                    bufferSizeLevel: this.options.bufferSizeLevel
                                })
                        }
                    }, {
                        key: "rate",
                        set: function (e) {
                            this.currentRate = e,
                                this.rateProcessor.rate = e
                        }
                    }, {
                        key: "provide",
                        value: function (e) {
                            var t = (1 === this.currentRate ? this.commonProcessor : this.rateProcessor).provide(e);
                            return t.audioTime = this.audioTime,
                                t
                        }
                    }]),
                        n
                }(N);

                function gn(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var mn = "canplaythrough"
                    , bn = "seeked"
                    , kn = "waiting"
                    , xn = function (e) {
                    c()(n, e);
                    var t = gn(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this, e),
                            v()(u()(r), "audioContext", null),
                            v()(u()(r), "scriptNode", null),
                            v()(u()(r), "gainNode", null),
                            v()(u()(r), "delay", 0),
                            v()(u()(r), "audioBuffer", new ArrayBuffer(0)),
                            v()(u()(r), "decodedBuffer", []),
                            v()(u()(r), "isFirstPlay", !0),
                            v()(u()(r), "defaultVolume", 1),
                            v()(u()(r), "currentRate", 1),
                            v()(u()(r), "eventListeners", {}),
                            v()(u()(r), "canPlay", !1),
                            v()(u()(r), "interval", void 0),
                            v()(u()(r), "seekTimeDelta", 0),
                            v()(u()(r), "audioTime", 0),
                            v()(u()(r), "audioProvider", void 0),
                            v()(u()(r), "isWaiting", !1),
                            v()(u()(r), "bufferSizeLevel", 1),
                            v()(u()(r), "decoding", !1),
                        void 0 !== (e = Object.assign({}, e)).volume && (r.defaultVolume = e.volume),
                        void 0 !== e.bufferSizeLevel && (r.bufferSizeLevel = e.bufferSizeLevel),
                            r.flushTime = e.flushTime || 1e3,
                            r.onReady = e.onReady,
                            r.onPlayNoAudio = e.onPlayNoAudio,
                            r.init(),
                            r
                    }

                    return o()(n, [{
                        key: "init",
                        value: function () {
                            this.audioProvider = new vn({
                                source: this.decodedBuffer,
                                playbackRate: this.currentRate || 1,
                                bufferSizeLevel: this.bufferSizeLevel
                            }),
                            "function" == typeof this.onReady && setTimeout(this.onReady, 0)
                        }
                    }, {
                        key: "feed",
                        value: function (e) {
                            var t = e.audio;
                            this.audioBuffer = this.appendByteArray(this.audioBuffer, t),
                            this.canPlay || (this.canPlay = !0,
                                this.triggerEvent(mn))
                        }
                    }, {
                        key: "appendByteArray",
                        value: function (e, t) {
                            var n = new Uint8Array((0 | e.byteLength) + (0 | t.byteLength));
                            return n.set(new Uint8Array(e), 0),
                                n.set(new Uint8Array(t), 0 | e.byteLength),
                                n.buffer
                        }
                    }, {
                        key: "decodeAudioData",
                        value: function (e) {
                            var t = this;
                            if (this.audioBuffer && this.audioBuffer.byteLength > 0) {
                                var n = this.audioProvider;
                                this.decoding = !0,
                                    this.audioContext.decodeAudioData(this.audioBuffer, (function (r) {
                                            t.decoding = !1,
                                            n === t.audioProvider && (n = void 0,
                                                r.startTime = t.delay,
                                                t.delay += r.duration,
                                                t.decodedBuffer.push(r),
                                            e && e.call())
                                        }
                                    ), (function (e) {
                                            t.decoding = !1,
                                                t.logger.error("decodeAudioData", e)
                                        }
                                    )),
                                    this.audioBuffer = new ArrayBuffer(0)
                            }
                        }
                    }, {
                        key: "createScriptProcessor",
                        value: function () {
                            var e = this;
                            this.scriptNode = this.audioContext.createScriptProcessor(2048 * Math.pow(2, this.bufferSizeLevel), 2, 2),
                                this.scriptNode.onaudioprocess = function (t) {
                                    var n = t.outputBuffer
                                        , r = n.length
                                        , i = e.audioProvider.provide(r);
                                    if (0 === i.size)
                                        return e.options.getMaxPTS() && 0 === e.audioBuffer.byteLength ? (e.onPlayNoAudio(),
                                            void e.reset(!1)) : 0 !== e.audioBuffer.byteLength || e.decoding ? void (e.isWaiting || (e.isWaiting = !0,
                                            e.triggerEvent(kn))) : void e.onPlayNoAudio();
                                    e.isWaiting && (e.isWaiting = !1,
                                        e.triggerEvent(mn));
                                    var a = n.getChannelData(0)
                                        , o = n.getChannelData(1);
                                    if (0 != i.audioTime && (e.audioTime = i.audioTime),
                                        a.set(i.left),
                                        o.set(i.right),
                                    i.size < r) {
                                        var s = new Float32Array(r - i.size);
                                        a.set(s, i.size),
                                            o.set(s, i.size)
                                    }
                                }
                                ,
                                this.scriptNode.connect(this.gainNode)
                        }
                    }, {
                        key: "getPaused",
                        value: function () {
                            return "running" !== this.audioContext.state
                        }
                    }, {
                        key: "play",
                        value: function () {
                            var e = this
                                , t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                            return new Promise((function (n, r) {
                                    e.isFirstPlay ? (e.isFirstPlay = !1,
                                        e.logger.info("startPlay"),
                                        e.audioContext = e.options.audioContext || new (window.AudioContext || window.webkitAudioContext),
                                        e.gainNode = e.audioContext.createGain(),
                                        e.gainNode.gain.value = e.defaultVolume,
                                        e.createScriptProcessor(),
                                        e.gainNode.connect(e.audioContext.destination),
                                        e.decodeAudioData.call(e, e.testAutoplay.bind(e, n, r)),
                                        e.interval = setInterval(e.decodeAudioData.bind(e), e.flushTime)) : (e.interval || (e.interval = setInterval(e.decodeAudioData.bind(e), e.flushTime)),
                                    e.scriptNode || e.createScriptProcessor(),
                                        e.getPaused() && !t ? e.audioContext.resume().then((function () {
                                                e.logger.info("play", "Audio is resumed"),
                                                    n()
                                            }
                                        )) : (e.logger.info("Audio resumed from waiting"),
                                            n()))
                                }
                            ))
                        }
                    }, {
                        key: "currentTime",
                        get: function () {
                            return this.audioTime
                        },
                        set: function (e) {
                            var t = this;
                            for (this.audioTime = e; this.decodedBuffer.length > 0;) {
                                var n = this.decodedBuffer.shift();
                                if (n.startTime <= e && n.startTime + n.duration > e) {
                                    n.loadedPosition = parseInt(n.length * (e - n.startTime) / n.duration),
                                        this.decodedBuffer.unshift(n);
                                    break
                                }
                            }
                            setTimeout((function () {
                                    t.triggerEvent(bn)
                                }
                            ), 0)
                        }
                    }, {
                        key: "pause",
                        value: function () {
                            var e = this;
                            this.audioContext && this.audioContext.suspend().then((function () {
                                    e.logger.info("pause", "Audio is paused")
                                }
                            ))
                        }
                    }, {
                        key: "addEventListener",
                        value: function (e, t) {
                            this.eventListeners[e] = t
                        }
                    }, {
                        key: "triggerEvent",
                        value: function (e) {
                            var t = this.eventListeners[e];
                            t && t.call()
                        }
                    }, {
                        key: "buffer",
                        value: function () {
                            var e = 0;
                            this.decodedBuffer.length > 0 && (e = this.decodedBuffer[0].startTime);
                            return {
                                start: 1e3 * e,
                                end: parseInt(1e3 * this.delay)
                            }
                        }
                    }, {
                        key: "volume",
                        get: function () {
                            return this.gainNode ? this.gainNode.gain.value : 1
                        },
                        set: function (e) {
                            this.gainNode ? this.gainNode.gain.value = e : this.defaultVolume = e
                        }
                    }, {
                        key: "reset",
                        value: function () {
                            var e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];
                            clearInterval(this.interval),
                                this.decodedBuffer = [],
                                this.audioBuffer = new ArrayBuffer(0),
                                this.canPlay = !1,
                                this.seekTimeDelta = 0,
                                this.audioTime = 0,
                                this.isWaiting = !0,
                                this.decoding = !1,
                                this.delay = 0,
                                this.interval = void 0,
                            this.scriptNode && (this.scriptNode.disconnect(),
                                this.scriptNode = null),
                                e ? this.init() : "running" === this.audioContext.state && this.pause()
                        }
                    }, {
                        key: "destroy",
                        value: function () {
                            var e, t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                            return this.delay = 0,
                            this.audioContext && (clearInterval(this.interval),
                                this.gainNode.disconnect(),
                            this.scriptNode && (this.scriptNode.disconnect(),
                                this.scriptNode = null),
                                t ? e = this.audioContext : this.audioContext.close(),
                                this.audioContext = null),
                                this.gainNode = null,
                                this.audioBuffer = new ArrayBuffer(0),
                                this.canPlay = !1,
                                this.isFirstPlay = !0,
                                this.decodedBuffer.length = 0,
                                this.seekTimeDelta = 0,
                                this.audioTime = 0,
                                e
                        }
                    }, {
                        key: "playbackRate",
                        set: function (e) {
                            e !== this.currentRate && (this.currentRate = e,
                                this.audioProvider.rate = e)
                        }
                    }, {
                        key: "testAutoplay",
                        value: function (e, t) {
                            var n = this
                                , r = R.createEl("audio")
                                , i = r.play();
                            r = null;
                            var a = !1;
                            void 0 !== i ? (i.catch((function () {
                                    a = !0
                                }
                            )),
                                setTimeout((function () {
                                        i = null,
                                            "running" === n.audioContext.state ? e() : a || n.getPaused() ? t("Autoplay is prevented") : e()
                                    }
                                ), 10)) : t("Promise is undefined")
                        }
                    }]),
                        n
                }(N);

                function Pn(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var wn = "canplaythrough";
                var _n = function (e) {
                    c()(n, e);
                    var t = Pn(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this, e),
                            v()(u()(r), "audioContext", null),
                            v()(u()(r), "defaultVolume", 1),
                            v()(u()(r), "audioBuffer", new ArrayBuffer(0)),
                            v()(u()(r), "decodedBuffer", []),
                            v()(u()(r), "canPlay", !1),
                            v()(u()(r), "delay", 0),
                            v()(u()(r), "audioTime", 0),
                            v()(u()(r), "initTime", null),
                            v()(u()(r), "cacheDuration", 0),
                            v()(u()(r), "eventListeners", {}),
                            v()(u()(r), "audioBufferSource", null),
                            v()(u()(r), "audioNodes", []),
                        void 0 !== (e = Object.assign({}, e)).volume && (r.defaultVolume = e.volume),
                            r.onReady = e.onReady,
                            r.onPlayNoAudio = e.onPlayNoAudio,
                            r.flushTime = e.flushTime || 1e3,
                            r.init(),
                            r
                    }

                    return o()(n, [{
                        key: "init",
                        value: function () {
                            "function" == typeof this.onReady && setTimeout(this.onReady, 0)
                        }
                    }, {
                        key: "feed",
                        value: function (e) {
                            var t, n, r, i = e.audio;
                            this.audioBuffer = (t = this.audioBuffer,
                                n = i,
                                (r = new Uint8Array((0 | t.byteLength) + (0 | n.byteLength))).set(new Uint8Array(t), 0),
                                r.set(new Uint8Array(n), 0 | t.byteLength),
                                r.buffer),
                            this.canPlay || (this.canPlay = !0,
                                this.triggerEvent(wn))
                        }
                    }, {
                        key: "decodeAudioData",
                        value: function (e) {
                            var t = this;
                            if (this.audioBuffer && this.audioBuffer.byteLength > 0) {
                                var n = this.decodedBuffer
                                    , r = this.audioBuffer.pts;
                                this.audioContext.decodeAudioData(this.audioBuffer, (function (i) {
                                        n === t.decodedBuffer && (0 === t.delay && (t.delay = t.audioContext.currentTime,
                                            t.audioTime = t.delay),
                                        null === t.initTime && (t.initTime = t.delay),
                                        t.isWaiting || (t.isWaiting = !1,
                                            t.triggerEvent(wn)),
                                            i.startPTS = r,
                                            i.startTime = t.delay,
                                            t.delay += i.duration,
                                            t.decodedBuffer.push(i),
                                            t.createBufferSource(e))
                                    }
                                ), (function (e) {
                                        t.logger.error("decodeAudioData", e)
                                    }
                                ))
                            }
                            this.audioBuffer = new ArrayBuffer(0)
                        }
                    }, {
                        key: "initAudioContext",
                        value: function () {
                            this.audioContext = this.options.audioContext || new (window.AudioContext || window.webkitAudioContext)
                        }
                    }, {
                        key: "checkHasAudioNoPlay",
                        value: function (e) {
                            var t = this.audioNodes[this.audioNodes.length - 1];
                            return !!t && !t.isDestroy
                        }
                    }, {
                        key: "getPaused",
                        value: function () {
                            return "running" !== this.audioContext.state
                        }
                    }, {
                        key: "createBufferSource",
                        value: function () {
                            var e = this
                                , t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : function () {
                            }
                                , n = this.decodedBuffer.shift();
                            if (n) {
                                var r = this.audioContext.createBufferSource();
                                r.onended = function () {
                                    r.isDestroy = !0,
                                        r.disconnect(),
                                        e.options.getMaxPTS() ? (e.onPlayNoAudio(),
                                            e.reset(!1, !0)) : e.checkHasAudioNoPlay() || (e.onPlayNoAudio(),
                                            e.pause())
                                }
                                    ,
                                    r.buffer = n,
                                    r.connect(this.audioContext.destination),
                                    this.audioNodes.push(r),
                                    this.start(r, n.startTime);
                                try {
                                    if (this.getPaused())
                                        return void t(new Error("The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page."))
                                } catch (e) {
                                    return console.log(e),
                                        void t(e)
                                }
                                t()
                            }
                        }
                    }, {
                        key: "start",
                        value: function (e) {
                            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0
                                , n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0;
                            e.start(t, n)
                        }
                    }, {
                        key: "initDecodeData",
                        value: function (e) {
                            var t = this;
                            return new Promise((function (n, r) {
                                    t.decodeAudioData((function (t) {
                                            t ? r(t) : n(),
                                            e && e()
                                        }
                                    ))
                                }
                            ))
                        }
                    }, {
                        key: "initInterval",
                        value: function () {
                            this.interval = setInterval(this.decodeAudioData.bind(this), this.flushTime)
                        }
                    }, {
                        key: "play",
                        value: function () {
                            var e = this;
                            return new Promise((function (t, n) {
                                    if (e.audioContext && e.interval)
                                        e.getPaused() && e.audioContext.resume().then((function () {
                                                e.logger.info("play", "Audio is resumed"),
                                                    t()
                                            }
                                        ));
                                    else {
                                        e.audioContext || e.initAudioContext();
                                        var r = !1
                                            , i = function () {
                                            r = !0,
                                                e.initDecodeData((function () {
                                                        e.initInterval()
                                                    }
                                                )).then(t).catch(n)
                                        };
                                        if (e.getPaused())
                                            return e.audioContext.resume().finally((function (i) {
                                                    r || e.initDecodeData((function () {
                                                            e.initInterval()
                                                        }
                                                    )).then(t).catch(n)
                                                }
                                            )),
                                                void setTimeout((function () {
                                                        r || i()
                                                    }
                                                ), 10);
                                        i()
                                    }
                                }
                            ))
                        }
                    }, {
                        key: "currentTime",
                        get: function () {
                            return this.audioContext ? null === this.initTime ? 0 : this.audioContext.currentTime - this.audioTime : (this.audioBuffer && this.audioBuffer.byteLength > 0 || this.onPlayNoAudio(),
                                0)
                        },
                        set: function (e) {
                            this.audioTime = e
                        }
                    }, {
                        key: "pause",
                        value: function () {
                            var e = this;
                            this.audioContext && this.audioContext.suspend().then((function () {
                                    e.logger.info("pause", "Audio is paused")
                                }
                            ))
                        }
                    }, {
                        key: "addEventListener",
                        value: function (e, t) {
                            this.eventListeners[e] = t
                        }
                    }, {
                        key: "triggerEvent",
                        value: function (e) {
                            var t = this.eventListeners[e];
                            t && t.call()
                        }
                    }, {
                        key: "buffer",
                        value: function () {
                            var e = 0;
                            this.decodedBuffer.length > 0 && (e = this.decodedBuffer[0].startTime);
                            return {
                                start: 1e3 * e,
                                end: parseInt(1e3 * (this.delay - this.initTime))
                            }
                        }
                    }, {
                        key: "reset",
                        value: function () {
                            var e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0]
                                , t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                            this.decodedBuffer = [],
                                this.audioBuffer = new ArrayBuffer(0),
                                this.canPlay = !1,
                                this.isWaiting = !0,
                                this.delay = 0,
                                this.initTime = null,
                                this.audioBufferSource = null,
                                this.cacheDuration = 0,
                                this.audioNodes.forEach((function (e) {
                                        e.isDestroy || e.disconnect()
                                    }
                                )),
                                this.audioNodes = [],
                                e ? this.init() : this.pause(),
                            t && (this.currentTime = this.audioContext.currentTime)
                        }
                    }, {
                        key: "destroy",
                        value: function () {
                            var e, t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                            return this.delay = 0,
                                this.reset(!1),
                            this.audioContext && (clearInterval(this.interval),
                                this.interval = null,
                                t ? e = this.audioContext : this.audioContext.close(),
                                this.audioContext = null),
                                e
                        }
                    }]),
                        n
                }(N);

                function Bn(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Tn = function (e) {
                    c()(n, e);
                    var t = Bn(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "need", !0),
                            v()(u()(e), "first", !1),
                            v()(u()(e), "offset", 0),
                            v()(u()(e), "currentPTS", 0),
                            v()(u()(e), "ready", !1),
                            v()(u()(e), "end", !1),
                            v()(u()(e), "lastData", null),
                            v()(u()(e), "nodeParent", null),
                            v()(u()(e), "useJMuxer", !1),
                            v()(u()(e), "defaultVolume", 1),
                            v()(u()(e), "audioContext", null),
                            v()(u()(e), "bufferSizeLevel", 1),
                            v()(u()(e), "useScriptProcessor", !0),
                            e.player = r.audioNode,
                        void 0 !== r.volume && (e.defaultVolume = r.volume),
                        void 0 !== r.audioContext && (e.audioContext = r.audioContext),
                            e.useScriptProcessor = !1 !== r.useScriptProcessor,
                        -1 !== [-1, 0, 1, 2, 3].indexOf(r.bufferSizeLevel) && (e.bufferSizeLevel = r.bufferSizeLevel),
                            e.createAudioMuxer(),
                            e.bindEvent(),
                            e.logger.info("audioDecoder", e.useJMuxer ? "JMuxer" : "AudioContext"),
                            e
                    }

                    return o()(n, [{
                        key: "maxPTS",
                        get: function () {
                            return this.options.player.imagePlayer.maxPTS
                        }
                    }, {
                        key: "seekingAndPause",
                        get: function () {
                            return this.options.player.seekingAndPause
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            var e = this;
                            this.bindNodeEvent(),
                                this.events.on(de.PlayerMaxPTS, (function (t) {
                                        e.currentPTS === t && (e.end = !0)
                                    }
                                ))
                        }
                    }, {
                        key: "bindNodeEvent",
                        value: function () {
                            var e = this;
                            this.addEventListener("seeked", (function () {
                                    e.onSeekedHandler && e.onSeekedHandler(),
                                        e.events.emit("AudioPlayer.seeked")
                                }
                            )),
                                this.addEventListener("canplaythrough", (function () {
                                        e.logger.info("canplaythrough"),
                                        e.ready || (e.ready = !0,
                                            e.status = "ready",
                                            e.logger.info("constructor", "canplaythrough", "ready"),
                                            e.events.emit(de.AudioPlayerDataReady))
                                    }
                                )),
                                this.addEventListener("waiting", (function () {
                                        e.ready = !1,
                                            e.end ? (e.useJMuxer || e.player.destroy(),
                                                e.status = "end",
                                                e.events.emit(de.AudioPlayerEnd, "audio"),
                                                e.logger.info("audioPlayer end")) : (e.logger.warn("audioPlayer waiting", e.player.currentTime, e.currentPTS),
                                                e.status = "waiting",
                                                e.events.emit(de.AudioPlayerWait, "audio"))
                                    }
                                ))
                        }
                    }, {
                        key: "reset",
                        value: function () {
                            this.lastData = null,
                                this.first = !1,
                                this.offset = 0,
                                this.currentPTS = 0,
                                this.ready = !1,
                                this.end = !1,
                                this.audioDecoder ? this.audioDecoder.reset() : (this.clear(),
                                    this.createAudioMuxer(),
                                    this.bindNodeEvent()),
                                this.stime = null
                        }
                    }, {
                        key: "createNode",
                        value: function () {
                            this.player = document.createElement("audio"),
                                this.player.classList.add("goldplay__audio--player"),
                                this.parentNode.appendChild(this.player)
                        }
                    }, {
                        key: "createAudioMuxer",
                        value: function () {
                            var e = this;
                            if (this.useJMuxer)
                                this.audioDecoder = new jt({
                                    node: this.player,
                                    mode: "audio",
                                    debug: !1,
                                    clearBuffer: !0,
                                    flushingTime: 10,
                                    onReady: this.onMSEReady.bind(this)
                                });
                            else {
                                var t = this.useScriptProcessor ? xn : _n;
                                this.audioDecoder = new t({
                                    flushTime: 100,
                                    onReady: this.onMSEReady.bind(this),
                                    getMaxPTS: function () {
                                        return e.maxPTS
                                    },
                                    onPlayNoAudio: function () {
                                        e.need = !1
                                    },
                                    getCurrentTime: function () {
                                        return e.currentTime
                                    },
                                    volume: this.defaultVolume,
                                    audioContext: this.audioContext,
                                    bufferSizeLevel: this.bufferSizeLevel
                                }),
                                    this.player = this.audioDecoder
                            }
                        }
                    }, {
                        key: "onMSEReady",
                        value: function () {
                            this.logger.info("onMSEReady", "AudioPlayerReady"),
                                this.events.emit(de.AudioPlayerReady)
                        }
                    }, {
                        key: "clear",
                        value: function () {
                            var e, t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                            return this.audioDecoder && (e = this.audioDecoder.destroy(t)),
                                this.audioDecoder = null,
                                e
                        }
                    }, {
                        key: "play",
                        value: function () {
                            var e = this;
                            "playing" !== this.status && (this.status = "playing",
                                this.player.play(this.seekingAndPause).then((function () {
                                        e.events.emit(de.AudioPlayerPlaySuccess)
                                    }
                                )).catch((function (t) {
                                        e.logger.error("play", "errorInfo:", t),
                                            e.events.emit(de.AudioPlayerPlayFail)
                                    }
                                )))
                        }
                    }, {
                        key: "muted",
                        set: function (e) {
                            this.player.muted = !!e
                        }
                    }, {
                        key: "playbackRate",
                        set: function (e) {
                            this.player.playbackRate = e
                        }
                    }, {
                        key: "pause",
                        value: function () {
                            "pause" !== this.status && (this.status = "pause",
                                this.player.pause())
                        }
                    }, {
                        key: "volume",
                        get: function () {
                            return this.player.volume
                        },
                        set: function (e) {
                            this.player.volume = e,
                                this.muted = 0 === e,
                                this.defaultVolume = e,
                                this.events.emit(de.Volumechange, "audio")
                        }
                    }, {
                        key: "currentTime",
                        get: function () {
                            return parseInt(1e3 * this.player.currentTime + this.offset)
                        },
                        set: function (e) {
                            this.player.currentTime = (e - this.offset) / 1e3
                        }
                    }, {
                        key: "paused",
                        get: function () {
                            return this.player.paused
                        }
                    }, {
                        key: "send",
                        value: function (e) {
                            if (!e.PTS)
                                return e.audioEnd || (this.need = !1),
                                    void this.events.emit(de.AudioPlayerDataReady);
                            if (this.need = !0,
                                this.audioDecoder) {
                                if (this.stime || (this.stime = Date.now()),
                                    (e = this.format(e)).audioEnd)
                                    return this.logger.info("push", "audioEnd"),
                                        this.feed(this.lastData),
                                        void (this.lastData = null);
                                if (this.first || (this.first = !0,
                                    this.offset = e.start),
                                e.PTS > this.currentPTS) {
                                    if (!this.lastData)
                                        return void (this.lastData = e);
                                    this.lastData.duration = e.PTS - this.lastData.PTS,
                                        this.feed(this.lastData),
                                        e.duration = this.lastData.duration,
                                        this.lastData = e
                                }
                            } else
                                this.logger.error("send", "audioDecoder is:", this.audioDecoder)
                        }
                    }, {
                        key: "feed",
                        value: function (e) {
                            this.audioDecoder.feed({
                                audio: e.data_byte,
                                duration: e.duration,
                                pts: e.PTS
                            }),
                                this.currentPTS = e.PTS
                        }
                    }, {
                        key: "format",
                        value: function (e) {
                            return e && e.data_byte && (e.start = e.PTS),
                                e
                        }
                    }, {
                        key: "addEventListener",
                        value: function (e, t) {
                            this.player.addEventListener(e, t)
                        }
                    }, {
                        key: "isBuffered",
                        value: function (e) {
                            return -1 !== [this.buffer()].findIndex((function (t) {
                                    return e >= t.start && e < t.end
                                }
                            ))
                        }
                    }, {
                        key: "buffer",
                        value: function () {
                            if (this.useJMuxer) {
                                for (var e = this.player.buffered, t = e.length, n = {}; t > 0;)
                                    n.start = 1e3 * e.start(t - 1) + this.offset,
                                        n.end = 1e3 * e.end(t - 1) + this.offset,
                                        t--;
                                return n
                            }
                            var r = this.player.buffer()
                                , i = this.player.isFirstPlay;
                            return {
                                start: r.start + this.offset,
                                end: r.end + this.offset,
                                isFirstPlay: i
                            }
                        }
                    }, {
                        key: "offset",
                        set: function (e) {
                            this.offset = e
                        }
                    }]),
                        n
                }(N)
                    , En = {
                    playerContainer: "plv__container",
                    screenContainer: "plv__screen--container",
                    screenCanvas: "plv__screen--canvas",
                    audioContainer: "plv__audio--container",
                    audioPlayer: "plv__audio--player",
                    controlContainer: "goldplay__control--container",
                    containerFullPage: "goldplay__container-fullpage",
                    containerFullScreen: "goldplay__container-fullscreen",
                    controlContainerFloat: "goldplay__control--container-float",
                    bigPlayButton: "goldplay__screen--bigplay",
                    poster: "goldplay__screen--poster",
                    nearside: "goldplay__control--nearside",
                    sidebar: "goldplay__control--sidebar",
                    buttonBlock: "goldplay__control--button-block",
                    playButton: "goldplay__control--play",
                    pauseButton: "goldplay__control--pause",
                    replayButton: "goldplay__control--replay",
                    speedBar: "goldplay__speed-bar",
                    speedBarBox: "goldplay__speed-bar--box",
                    rateBar: "goldplay__rate-bar",
                    rateBarBox: "goldplay__rate-bar--box",
                    fullPage: "goldplay__control--fullpage",
                    fullScreen: "goldplay__control--fullscreen",
                    waitingBar: "goldplay__waiting-bar",
                    progressBar: "goldplay__progress-bar",
                    progressBarHover: "goldplay__progress-bar-hover",
                    progressBarPlay: "goldplay__progressbar--play",
                    progressBarPlayHover: "goldplay__progressbar--play-hover",
                    progressBarLoad: "goldplay__progressbar--load",
                    progressBarLoadHover: "goldplay__progressbar--load-hover",
                    progressBarDot: "goldplay__progressbar--dot",
                    progressBarDotHover: "goldplay__progressbar--dot-hover",
                    volumeBar: "goldplay__volume-bar",
                    volumeBarAudio: "goldplay__volume-bar--audio",
                    volumeBarAudioOn: "goldplay__volume-bar--audio-on",
                    volumeBarAudioOff: "goldplay__volume-bar--audio-off",
                    volumeBarHandle: "goldplay__volume-bar--handle",
                    volumeBarRod: "goldplay__volume-bar--rod",
                    volumeBarRodHover: "goldplay__volume-bar--rod-hover",
                    volumeBarSize: "goldplay__volume-bar--size",
                    volumeBarColumn: "goldplay__volume-bar--column",
                    alertBox: "goldplay__alter-box",
                    alertClose: "goldplay__alter--close"
                };

                function Sn(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Cn = En
                    , Rn = /safari/i.test(navigator.userAgent) && -1 === navigator.userAgent.indexOf("Chrome")
                    , Ln = function () {
                    function e() {
                        i()(this, e)
                    }

                    return o()(e, null, [{
                        key: "createContainer",
                        value: function (e) {
                            var t;
                            if (Rn)
                                t = R.createEl("div");
                            else {
                                var n = function (e) {
                                    c()(n, e);
                                    var t = Sn(n);

                                    function n() {
                                        return i()(this, n),
                                            t.apply(this, arguments)
                                    }

                                    return n
                                }(ne()(HTMLDivElement));
                                customElements.get("plv-container") || customElements.define("plv-container", n, {
                                    extends: "div"
                                }),
                                    t = R.createEl("plv-container", "div")
                            }
                            t.className = Cn.playerContainer;
                            var r = e.options.width ? e.options.width : e.el.offsetWidth
                                , a = e.options.height ? e.options.height : e.el.offsetHeight;
                            return t.style.position = "relative",
                                t.style.display = "block",
                                t.style.width = "number" == typeof r ? "".concat(r, "px") : r,
                                t.style.height = "number" == typeof a ? "".concat(a, "px") : a,
                                t
                        }
                    }, {
                        key: "createScreenContainer",
                        value: function (e) {
                            var t;
                            e.$container;
                            if (Rn)
                                t = R.createEl("div");
                            else {
                                var n = function (e) {
                                    c()(n, e);
                                    var t = Sn(n);

                                    function n() {
                                        return i()(this, n),
                                            t.apply(this, arguments)
                                    }

                                    return n
                                }(ne()(HTMLDivElement));
                                customElements.get("plv-screen") || customElements.define("plv-screen", n, {
                                    extends: "div"
                                }),
                                    t = R.createEl("plv-screen", "div")
                            }
                            return t.classList.add(Cn.screenContainer),
                                t.style.width = "100%",
                                t.style.height = "100%",
                                t.style.display = "block",
                                t
                        }
                    }, {
                        key: "createAudioContainer",
                        value: function () {
                            var e = R.createEl("plv-audio");
                            return e.classList.add(Cn.audioContainer),
                                e.style.display = "none",
                                e
                        }
                    }, {
                        key: "createAudio",
                        value: function () {
                            var e = R.createEl("audio");
                            return e.classList.add(Cn.audioPlayer),
                                e.controls = !0,
                                e
                        }
                    }, {
                        key: "clearCavans",
                        value: function (e) {
                            var t = e.getContext("webgl");
                            t.clear(t.COLOR_BUFFER_BIT)
                        }
                    }]),
                        e
                }();
                v()(Ln, "createCanvas", (function (e) {
                        var t = R.createEl("canvas");
                        return t.style.display = "none",
                            t.classList.add(Cn.screenCanvas),
                            t.width = e.options.screenWidth || e.screenWidth,
                            t.height = e.options.screenHeight || e.screenHeight,
                            t
                    }
                ));
                var An = x.a.get("Template.js")
                    , Dn = function () {
                    function e() {
                        i()(this, e)
                    }

                    return o()(e, null, [{
                        key: "mergeVar",
                        value: function (e) {
                            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                            if ("string" != typeof e || "" === e)
                                return e;
                            try {
                                var n = new RegExp("\\${'?\"?\\s*([.:a-z0-9_s]+?)\\s*'?\"?}", "ig");
                                return e.replace(n, (function (e, n) {
                                        n = n.trim();
                                        var r = t[n];
                                        return r = (r = void 0 === (r = null === r ? "" : r) ? "" : r) || ""
                                    }
                                ))
                            } catch (t) {
                                return An.error("mergeVar", "replace variable", "error:", t),
                                    e
                            }
                        }
                    }, {
                        key: "makeValue",
                        value: function (t, n, r) {
                            if ("string" != typeof n && "function" != typeof n)
                                return n;
                            if ("function" == typeof n && (n = n.call(this, this.data)),
                                !r)
                                return e.escapeHTML.call(this, n);
                            var i, a = function (t) {
                                var n = "";
                                return t && (n = " ".concat(e.slotReplaceName, '="true"')),
                                    '<gp-slot style="display:none"'.concat(n, "></gp-slot>")
                            };
                            if (e.isSoltType(r)) {
                                if ("function" != typeof this.getComponent)
                                    return An.error("makeValue", "the object is not support slot mode.", this.getComponent, n),
                                        n;
                                switch (r) {
                                    case e.slotTypeMap.component:
                                        i = n;
                                        var o = this.getComponent(i);
                                        "object" === S()(o) && o.element ? (o.element.setAttribute(e.slotReplaceName, "true"),
                                            n = o.element.outerHTML) : n = a(i);
                                        break;
                                    case e.slotTypeMap.html:
                                        n = e.mergeVar.call(this, n, this.data)
                                }
                                var s = "";
                                void 0 !== i && (s = " ".concat(e.slotComName, '="').concat(i, '" '));
                                var u = "$1 " + e.slotTypeName + '="' + r + '" ' + e.slotKeyName + '="' + t + '"' + s + "$2";
                                return "string" == typeof n && (n = (n = "" === n ? a() : n).replace(/^\s*(<\s?[\w-]*)(.*[\r|\n|>])/, u)),
                                    n
                            }
                            if ("string" == typeof r) {
                                var l = On[r];
                                return "function" == typeof l && (n = l.call(this, n)),
                                    n
                            }
                            return e.escapeHTML.call(this, n)
                        }
                    }, {
                        key: "escapeHTML",
                        value: function (e) {
                            return "string" != typeof e ? e : e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;")
                        }
                    }, {
                        key: "generate",
                        value: function (t, n, r) {
                            var i = this
                                , a = r[r.length - 1] || {}
                                , o = [t[0]];
                            return n.forEach((function (n, s) {
                                    if (n) {
                                        var u, l, c = n.split(e.pipSeparator);
                                        c.length > 1 && (n = c[0],
                                            l = c[1]),
                                            u = Number.isInteger(n) ? r[n] : a[n],
                                        void 0 !== (u = e.makeValue.bind(i)(n, u, l)) && o.push(u),
                                        void 0 !== t[s + 1] && o.push(t[s + 1])
                                    }
                                }
                            )),
                                o.join("")
                        }
                    }, {
                        key: "create",
                        value: function (t) {
                            for (var n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++)
                                r[i - 1] = arguments[i];
                            var a;
                            a = Array.isArray(t) ? "array" : "function" == typeof t ? "function" : "string";
                            var o = this;
                            if ("object" === S()(o) || "function" == typeof o)
                                if (void 0 !== t && "" !== t)
                                    switch (void 0 !== o.data && null !== o.data || (An.info("create", "this object.data is undefined or null", o),
                                        o.data = {}),
                                        a) {
                                        case "array":
                                            return function () {
                                                for (var n = arguments.length, i = new Array(n), a = 0; a < n; a++)
                                                    i[a] = arguments[a];
                                                var s = i[i.length - 1] || {};
                                                "object" === S()(o) && (o.__template__ = {
                                                    tplObj: t,
                                                    keys: r,
                                                    dict: s
                                                });
                                                var u = e.generate.bind(o);
                                                return u(t, r, i)
                                            }
                                                ;
                                        case "function":
                                            var s = e.create.bind(o);
                                            return t.call(o, o.data, s, o);
                                        default:
                                            return function (n) {
                                                return n = void 0 !== n ? n : o.data,
                                                    e.mergeVar(t, n)
                                            }
                                    }
                                else
                                    An.error("create", "have not give tplObj parameter.", t);
                            else
                                An.error("create", "this is not an object.", o)
                        }
                    }, {
                        key: "isSoltType",
                        value: function (t) {
                            return t = String(t).toLowerCase(),
                                e.slotTypeMap[t]
                        }
                    }]),
                        e
                }();
                Dn.pipSeparator = "|",
                    Dn.slotTypeName = "gp-slot-type",
                    Dn.slotKeyName = "gp-slot-key",
                    Dn.slotComName = "gp-slot-com",
                    Dn.slotReplaceName = "gp-slot-replace",
                    Dn.slotTypeMap = {
                        html: "html",
                        component: "component"
                    };
                var On = {
                    trim: function (e) {
                        return e.trim()
                    },
                    upperCase: function (e) {
                        return e.toUpperCase()
                    },
                    lowerCase: function (e) {
                        return e.toLowerCase()
                    }
                }
                    , Mn = Dn
                    , In = n(29)
                    , Nn = n.n(In)
                    , Un = n(20)
                    , Fn = n.n(Un)
                    , Hn = x.a.get("Observer.js")
                    , jn = function () {
                    function e(t) {
                        i()(this, e),
                            v()(this, "object", null),
                            this.setObject(t)
                    }

                    var t;
                    return o()(e, [{
                        key: "setObject",
                        value: function (e) {
                            this.object = e
                        }
                    }, {
                        key: "watch",
                        value: (t = Nn()(Fn.a.mark((function e(t, n, r) {
                                    var i;
                                    return Fn.a.wrap((function (e) {
                                            for (; ;)
                                                switch (e.prev = e.next) {
                                                    case 0:
                                                        if ("function" == typeof (i = this.object).watch) {
                                                            e.next = 3;
                                                            break
                                                        }
                                                        return e.abrupt("return");
                                                    case 3:
                                                        return e.next = 5,
                                                            i.watch(t, n, r);
                                                    case 5:
                                                        !1 !== e.sent && "function" == typeof i.render && i.render(t, n, r),
                                                        "function" == typeof i.afterWatch && i.afterWatch(t, n, r);
                                                    case 8:
                                                    case "end":
                                                        return e.stop()
                                                }
                                        }
                                    ), e, this)
                                }
                            ))),
                                function (e, n, r) {
                                    return t.apply(this, arguments)
                                }
                        )
                    }, {
                        key: "create",
                        value: function (e) {
                            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}
                                , n = this
                                , r = t.set
                                , i = t.get;
                            e = e || n.data;
                            var a = n.object
                                , o = {
                                set: function (e, t, i) {
                                    return "function" == typeof r ? r.call(n, e, t, i) : (e[t] !== i && (e[t] = i,
                                    a.__template__ && Object.prototype.hasOwnProperty.call(a.__template__.dict, t) && n.watch(e, t, i)),
                                        !0)
                                },
                                get: function (e, t) {
                                    return "function" == typeof i ? i.call(n, e, t) : "object" === S()(e[t]) && null !== e[t] ? new Proxy(e[t], o) : Reflect.get(e, t)
                                }
                            };
                            return new Proxy(e, o)
                        }
                    }]),
                        e
                }()
                    , zn = function (e) {
                    return "object" !== S()(e) && Hn.error("observer", "this is not an object."),
                        new jn(e)
                };

                function Wn(e, t) {
                    var n;
                    if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                        if (Array.isArray(e) || (n = function (e, t) {
                            if (!e)
                                return;
                            if ("string" == typeof e)
                                return Vn(e, t);
                            var n = Object.prototype.toString.call(e).slice(8, -1);
                            "Object" === n && e.constructor && (n = e.constructor.name);
                            if ("Map" === n || "Set" === n)
                                return Array.from(e);
                            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                                return Vn(e, t)
                        }(e)) || t && e && "number" == typeof e.length) {
                            n && (e = n);
                            var r = 0
                                , i = function () {
                            };
                            return {
                                s: i,
                                n: function () {
                                    return r >= e.length ? {
                                        done: !0
                                    } : {
                                        done: !1,
                                        value: e[r++]
                                    }
                                },
                                e: function (e) {
                                    throw e
                                },
                                f: i
                            }
                        }
                        throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                    }
                    var a, o = !0, s = !1;
                    return {
                        s: function () {
                            n = e[Symbol.iterator]()
                        },
                        n: function () {
                            var e = n.next();
                            return o = e.done,
                                e
                        },
                        e: function (e) {
                            s = !0,
                                a = e
                        },
                        f: function () {
                            try {
                                o || null == n.return || n.return()
                            } finally {
                                if (s)
                                    throw a
                            }
                        }
                    }
                }

                function Vn(e, t) {
                    (null == t || t > e.length) && (t = e.length);
                    for (var n = 0, r = new Array(t); n < t; n++)
                        r[n] = e[n];
                    return r
                }

                function Xn(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                function Yn(e) {
                    if (e) {
                        var t = []
                            , n = [];
                        for (n.push(e); n.length;) {
                            var r = n.shift()
                                , i = r.getAttribute(Mn.slotTypeName);
                            if (!Mn.isSoltType(i)) {
                                t.push(r);
                                for (var a = r.children, o = 0, s = a.length; o < s; o++)
                                    n.push(a[o])
                            }
                        }
                        return t
                    }
                }

                var Gn, $n = function (e) {
                    return e.getAttribute && e.getAttribute(Mn.slotTypeName) === Mn.slotTypeMap.html
                }, Kn = function (e, t) {
                    return !(!(n = e).getAttribute || n.getAttribute(Mn.slotTypeName) !== Mn.slotTypeMap.component || e.getAttribute(Mn.slotComName) === t.getAttribute(Mn.slotComName));
                    var n
                }, qn = function (e, t, n) {
                    var r;
                    (e || t) && (!e && t ? n.appendChild(t) : !t && e ? n.removeChild(e) : e.tagName !== t.tagName || (r = t,
                    $n(e) && $n(r)) || Kn(e, t) ? e.replaceWith(t.cloneNode(!0)) : e.nodeType === Node.TEXT_NODE && e.nodeValue !== t.nodeValue ? e.nodeValue = t.nodeValue : e.setAttribute && R.setAttributes(e, t))
                }, Qn = function (e) {
                    c()(n, e);
                    var t = Xn(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "createTemplate", null),
                            v()(u()(e), "template", ""),
                            v()(u()(e), "element", null),
                            v()(u()(e), "eventsList", {}),
                            v()(u()(e), "data", {}),
                            v()(u()(e), "id", ""),
                            e.id = r.id || e.constructor.name,
                            e.options = r,
                            e.createTemplate = Mn.create.bind(u()(e)),
                            e
                    }

                    return o()(n, [{
                        key: "getTemplate",
                        value: function () {
                            return this.template
                        }
                    }, {
                        key: "setTemplate",
                        value: function (e) {
                            this.template = e
                        }
                    }, {
                        key: "init",
                        value: function () {
                            this.data = zn(this).create(this.data),
                                this.render(),
                            "function" == typeof this.afterInit && this.afterInit()
                        }
                    }, {
                        key: "afterInit",
                        value: function () {
                        }
                    }, {
                        key: "initProps",
                        value: function () {
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                        }
                    }, {
                        key: "watch",
                        value: function () {
                        }
                    }, {
                        key: "render",
                        value: function () {
                            var e = "";
                            e = "function" == typeof this.template ? this.template(this.data) : this.template;
                            var t = R.createEl("div");
                            if ("string" == typeof e) {
                                t.innerHTML = e;
                                var n, r = t.firstElementChild,
                                    i = Wn(r.querySelectorAll("[" + Mn.slotReplaceName + "]"));
                                try {
                                    for (i.s(); !(n = i.n()).done;) {
                                        var a = n.value;
                                        if ("true" === a.getAttribute(Mn.slotReplaceName)) {
                                            var o = a.getAttribute(Mn.slotComName)
                                                , s = this.getComponent(o);
                                            if (!s)
                                                continue;
                                            var u = s.element;
                                            R.isElement(this.element) ? a.replaceWith(u.cloneNode(!0)) : a.replaceWith(u),
                                                s.element.removeAttribute(Mn.slotReplaceName)
                                        }
                                    }
                                } catch (e) {
                                    i.e(e)
                                } finally {
                                    i.f()
                                }
                                R.isElement(this.element) ? this.replaceNode(this.element, r) : this.element = r
                            } else
                                this.logger.error("render:", "this template is not html string", "html:", e)
                        }
                    }, {
                        key: "replaceNode",
                        value: function (e, t) {
                            if (e && t) {
                                var n = Yn(e)
                                    , r = Yn(t)
                                    , i = n.length
                                    , a = r.length
                                    , o = Math.max(i, a);
                                if (o <= 0 || e.tagName !== t.tagName)
                                    return e.replaceWith(t),
                                        void (this.element = t);
                                for (; o--;) {
                                    var s = n[o]
                                        , u = r[o];
                                    if (s)
                                        if (u) {
                                            if (s.tagName === u.tagName && R.syncAttributes(s, u),
                                                !s.isEqualNode(u)) {
                                                var l = Math.max(s.childNodes.length, u.childNodes.length);
                                                if (l <= 0)
                                                    qn(s, u, s.parentNode);
                                                else
                                                    for (var c = 0, h = l; c < h; c++) {
                                                        var f = s.childNodes[c]
                                                            , d = u.childNodes[c];
                                                        (f || d) && qn(f, d, s)
                                                    }
                                            }
                                        } else
                                            s.parentNode.removeChild(s);
                                    else
                                        e.appendChild(u)
                                }
                            }
                        }
                    }, {
                        key: "show",
                        value: function () {
                            this.data.display = "show",
                            this.element && (this.element.style.display = "inline-block")
                        }
                    }, {
                        key: "hide",
                        value: function () {
                            this.data.display = "hide",
                            this.element && (this.element.style.display = "none")
                        }
                    }, {
                        key: "resetPosition",
                        value: function () {
                            var e = this.element.parentNode
                                , t = e.offsetWidth
                                , n = e.offsetHeight;
                            this.element.style.marginTop = (n - this.element.offsetHeight) / 2 + "px",
                                this.element.style.marginLeft = (t - this.element.offsetWidth) / 2 + "px"
                        }
                    }, {
                        key: "replace",
                        value: function (e) {
                            this.element.replaceWith(e),
                                this.element = e
                        }
                    }, {
                        key: "update",
                        value: function (e) {
                            this.element.innerHTML = e
                        }
                    }, {
                        key: "addEventListener",
                        value: function (e, t, n) {
                            var r = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
                            return e.addEventListener(t, n, r),
                                {
                                    destroy: function () {
                                        e.removeEventListener(t, n)
                                    }
                                }
                        }
                    }, {
                        key: "removeEventListenerAll",
                        value: function () {
                            var e = this;
                            Object.keys(this.eventsList).forEach((function (t) {
                                    e.eventsList[t].destroy()
                                }
                            ))
                        }
                    }, {
                        key: "getComponent",
                        value: function (e) {
                            if (void 0 !== e)
                                return this.options.componentsController ? this.options.componentsController.getComponent(e) : void 0
                        }
                    }, {
                        key: "getHTMLString",
                        value: function () {
                            return this.element.outerHTML
                        }
                    }, {
                        key: "destroy",
                        value: function () {
                            this.element.parentNode && this.element.parentNode.removeChild(this.element),
                                this.events.emit("Component_" + this.id + ".destroy", this),
                                this.removeEventListenerAll()
                        }
                    }]),
                        n
                }(N), Zn = n(8), Jn = n.n(Zn), er = {
                    formatHHMMSS: function (e) {
                        var t = parseInt(e, 10)
                            , n = Math.floor(t / 3600)
                            , r = Math.floor((t - 3600 * n) / 60)
                            , i = t - 3600 * n - 60 * r;
                        n < 10 && (n = "0" + n),
                        r < 10 && (r = "0" + r),
                        i < 10 && (i = "0" + i);
                        var a = "";
                        return "00" !== n && (a = n + ":"),
                        a + r + ":" + i
                    }
                }, tr = {
                    formatBytes: function (e, t) {
                        if (0 == e)
                            return "0 Bytes";
                        var n = t <= 0 ? 0 : t || 2
                            , r = Math.floor(Math.log(e) / Math.log(1024));
                        return parseFloat((e / Math.pow(1024, r)).toFixed(n)) + " " + ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"][r]
                    }
                };

                function nr(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var rr,
                    ir = "data:img/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAA+CAYAAABuk1SaAAAZ2ElEQVR4nO2de1wV1fbA157ZcyTe\n6sjj8FJeoqghiJAovsAHkJSUmpZl3bTHTe/NzO71k131Z97y9tJft9SrojdNLTQUH6iR4EcTUTRN\nBERCRAQcURCUnNfvDzl2OMzrPDDsd75/wZ6ZvdfMnLX3XmuvtQfAjh07duzYsWPHjh07duzYsdMp\nQFKFoig+aDnsAEC0F9UzxgNiORG4L8+y31pSh7czxiQBmBeAu9rEcbaW8f8DCP2mFvh3lOOhIc6H\nCh2tFxOeDeKn+TuDv8N/RD9b1e3tjPHUEJg6py8/pyAV/AEAlpwil2i9PlZPBQ/xEIdEdBcfjewu\nRJ5NAy/aAcKYFiguTCMqL96C8tIGoqSsEZUV3YSi/KtsuaWyxvtSfRP1YsLzIfzzrjpwdV8vhlha\n18NCh40g0V5UzxA3CO3pLPbEBOD6X1H91dtQff4mFBcxbJ3VDTwAwmnKY3EUvyStpzgRAGgAgMom\nKPTfJEbZov4RflS/7xK4He46CDaUMS1QTG8Q+6hdOyaAilzwKL9guLcYb5BNA0xxAxR/V0FmbrqI\nvjp7ja3RclGkJ+W/bBC/bKyvOMbQViGD9kdmCGM1tvtQYTyC2ExBBvSg9MO8YegT/vyTiT5iQmux\n1Itjau9A3Yoi8rOMX9D24ussY3ZjD4AxAVTk/nFcNpjcw4KT5KylJ7jV1tY/zJcKO5zMHTatP72U\n+NcLP/DzlK5dMZRcODtceMP0WjNh1pQQ/1l6Ci2taOCa5E6aGKyL3z6azTBta/YxPG3FT+xmK9rv\ntBgrCGFtZalB1JCs8cT6MxO5nz5/jNua6CNOgXsPU+7l0Z6PQN+lUfyq4qe48wuj8WvWymBrIjwo\nXynlAAC42IgsnqIY8HPFDlLKAQDwqwB3la7NeZzYagPlAACgX+4tvFMxhf8lpRcVK3VCrJ4KllIO\nAIDyRrD6OTwMWKwgw3ypsIKJxN7MBC4zxV98ASx7YfTiSH7RkSeITEvl6Ai2jOK+Bpn7qWiCCmvr\nfyYYTZWrn0Dy7yRrPLF+lF4cJXethdBZY7hdU3tTY0wPZCZwmXJtVTZBpQ1l6LRYpCBLBuPZh5O5\nw9E9xHFgg54szlMcciCF+NrKemxChAflG+YGYXLHq5vFamvbyKuBvCWnyDktPFRpveaV/tRTKf5i\nCthWOQzQm0dwm2K8qUBDQZwPFer5CHjInM/U3BY02S8PO2YrSHYysendgfy70P5FMeW34Pj8AvzS\n+Gwc3X879g7ZhruGZ2DP+N04fHouTs6qROkAIGVz0Ik+YsKbEXi6BfdgU07XsVUTDuDUyiYolDou\niCBY28axarbs3ePcihF78EiQfh5tCOpKuX45hPsCOkY5DNDfjOK+Mfxz5ApbmvY9TmNaoFjq5Lpm\n3urn8DBglpv39NPowFhfiIC2L4phWoCZeYSatb3sbt4H0pfWAUARAOyRM34BgP44hv/IzxVvu9zI\ntZgjl63ZWc4eDelKjb4wibsARnJyAtSwvLKNYA7Hqtmy0imoNNRN+Yf/9gBhPnSscgAAgL8z+E8J\npRK2lLIHAQAyyti8CA8q8fST3Cnj9mvvQJ1nRwvTSdA8gmQnE5siurVXjk0Xic30BrHP9rK7eVrq\n2X+JLYzZiWNAZiQZ7IEGa5WpI7lwg72ZXkqkG5edqUdnaps5m/act3m4rXZO9hUyO6cabQMNo42V\n0DNC+BnGBafr2KrMS2incdm5G+jnDpaj06BJQRYMwjONfeCtMGtLiHXTDvJzzG00/ypbbvrjM+BK\ngau59XUUZ2+is8b/19wBm8+7HUlwVDtne9ndvFG7hMlp3+M00KYkzOl6OLi2hPhwz2W0UeM1AAAw\n1lccE9SVavMOTtcTp4z/r2uBh2IdyxaoTrEiPSn/wif4pWAyxBc3QPFLh/j5ljb8+Xni8xdChRdM\n6mWOX4PjltZpa1gBtQnVaObUe/uOJKOMzetLU+FFadw5kJ9yMc/m4ue+Kmb3RbQWeDiRRKwnEftp\nLPdJoAsEKlwLAEAHOENPADhjKLhr4nq+xSLZdZM/GqojyBdDeCnjkJmSg5+xpuGCGrbilaP4Vfit\nd2OezcXPnetEq+wYiW06EB0But9LFgNFDFsXuws/BjKjwsoiYuVXxew+47K6Zl7YWc4eDdwsxmRX\nof1qbXg5gpfx/yRq25F2IX//5/CgUFSQMQFUZIyH2M4mSC8l0k/XsZpdlHJ8eZb9dsB2/GjqQRwX\n+g3ubfpiOxu0g+0NZQHM94odq2bL5KaoOyqI75Sufe4Qeg5UplxOWHna100ndlOT8Y+CooLM7cfP\nBYnR44ti4gtbCXDmGludeZE9WlrP1tuqzo7iERIcfm8ZDKSXERukymtV7KS6Zl5YdIpcpHROIwuN\nSse7dKLn0NHI2iB9acqjKE1st7pafgvKrYkIfZjRkaLVU4sYbyowugcM9nUUfXu6CAFTAuUXJZW4\n2CCWSZXzGtZpjtWhYwqHmfM3pNc+DHSGqaatmB5GJbnqwDXvKuSduca2WwSWVZBRepAMaUi/QG5Y\nbGMhO4LQblS3QFcIDHKFwBu/ws2SBiiubhKrrcmRcFSZeigxOZQa9W4E927+BOgHNljT+JUX7zax\nUOFMQU/jcqVQFQNNHMga2Udq0VGpH4oxLhQ4axa0FT9X7ODliLwCXSGwhwN4dCFFHSsgrv5XqP/l\nFpRfuiVWVj3A9S+9C9btGcfv3jj8/tIFkxpEpWZeZI8anyerIIl6PlGq/Pg11Gm8TKZ4OmEitRd6\n4qUQ/qXSp8XBYPJD5ASoWT4Ef7KtHG0rqGErzK3fCZv/w/B0wsTqYcKarSPFCabyWENdMy9UTkP1\npgqiBb0j6GUOMR+cIT/YKXPQgDkjaUovKvbZYH7a5WfuB7HKwawYSq5ceY5YceEGe1Nr/ZaSEoBS\nIrpBglERvXUkt9XDiQwAI7tQsrfRu2BdaoA4QerY5U4apDYxWBd/7in+3Oo4LiPGQ0wCiZeBCfCa\n15//oCCVK/jXEPyOuW2Y673xdcUOBU/wBakB4osS8jCbLhIrzInHshXJfkKyVHlONcrZWd62B5VC\n60i6JZFYmTWG2zUlUPwzqHcO9OxwYdGFSdwF45iwjkK8NxVt46xwIMG3bzeir3GZpIL4OCE9SNxQ\n9W04U98idjpj+u9ReOb20WwG7dBmPs/k16E9G8uIjzMvoXXVt+EM/PZA6Lf683N/noR+8HXFmg1O\nZwzOnk5Yc/RB1lh+l78zRJoUM5+fJxbrN5M+0w7yc4puoCKt9dmCAT0o/fRgQSrmjfnTYeJlLXVo\nGUmzxhPrpwSqjhpS0EdSuCMeTqTqc/Z0wsTMftTE7GRiU+10dO700+jAlFAqQe06AIA159jvFhaS\n70FbJWHumKx1SU6xertLG44XGlBZZ8tznjsQT/9ocJuFTObNfHJu5iX03cUbbGOM0bmj/KgBc8L5\nOa2jI92vK4w4+jh/BAA0ZQhiArxa5/iqhvDyIfjtef0hwqSYmfwDnry1lM15vbXAmRLNnrZZw3eJ\n3A6QGM3id+Ph5TdZRe+VAbWRdEIgNWRnouWRx5gAr0lBxCQA2CJ3TqA7di2ZxJ80zsb0fAT6bhnJ\nRczoQ81Yf57NUmtncQH379rp6HXPR+5ni1bmX2XLVXPSe7uKoTKC2yyHfUAPSh/rCbE6AnQ6QtRh\nAmEAAF4UOVEE4ETE3RXgLi8AhxAQzlh0PnAF7TdOE43zoUKPpPAfgZFyROzAA0/XsVUfS7SZc5k9\nAwAvvR1JvfhhNPcBAND+zuC/ZgS57OVD/N+0yI00GMGt0QfzwCRKIO17nJZRxmqKWesIDqQQXyf6\ngOn0hUnZjx/Pq2I1j2QOKm7eVH8hFay0t1ptYFkF+Xa08I2xchhBr4/n1gNADy3trC8l17/zKL8c\nAOBoHTrqb3Jc8gevdxR9pMrDu4p99S5YV32Lszqi9Xgql+9Agq8512RUoNUAMMvw/9ph3FowUo4R\ne/BILQuYHxay69aOIHu/1Ft4G+5l1v1pmC+14XAVq+jeBNDmJXpvIP8emPxA0kuJ9N9LOcJpyiMj\ngctI9IEwE7mYcdl4/L4K9oQ59akpiLej6KV0vIW/X48sSouyiQG6iAPjRNOpaxtSg6ghph4pKX6+\n+VvgZQFDFEwxOS75sq+1oGtS5e46CPZ4BMkl0ZhF9W0wO/HoSjO6Yvg7pRcVa5zYlHkJ7Tx0mdUc\nZfpeITKef9J/G6BxBFE5Hk5THhIODubTc8RnWmWzBtN8ldmPUlPPpXHnwtxgKBgpRwsPVVGZOMpc\n5TCgZCPk1pC5EsXMolPkG1GZOCD0G9Ip9BvSKexb3GNcNo6WCqjESH62Ek0L7TyUJtCDuouD1O4B\nAODmr2DwmDFSHlrJmyxvks+7jqTbGZ0WkXoAp4J54dvMpz+jTw3/vNybfxmMHtKGMiy5sixHVSPX\nsqUc3R/Ck/zEpAE9KDn3533UplhShmlxAxTbIjRHC/UtQj3AvXWX8qkof0Us95mJPEzmJbQucCsZ\ndLKGtdQjSSOFriK9RExvdYrc5+0CPP+949z/nqxhKysbuNuVDdzt4usss6+CPZG0R3i+4Bpqo6ic\nCLK2Li8iVTt4cA8hRu0cAAD3LuBu+FtqBiH5sssaQHKVFgDg1TD+VS0Nq3H2Gluz6SKhdVcMZuoh\nPK38JtcIAODvhh1Nemnmp+viaXNl+L6a/N7oX3qYNwxVu4ZQCc+ZGcbPMi07VksorVzblKeDiKcy\nxhKrto7ktga6gGlPy7xyFL+auk94ydppstJUs7aZE2J3ko+tKSH+CfcS6orTS4R0qXMjPCjfZ8Oo\ncZ6PiJpnJj/Vt/FISjLWVxwT6I5VUyf6uYv9AAAOXEEHpY5LDmOtax0MSAxj0T3EQXE+VOiRK2yp\nWuO24kgtOrq5hL0fhRrRHZkmbsHFG9o8MMZUNbddgxij58cCwDala6hWZ4IUUV6U/8nU9nnc136V\nnrJ2BJ8/xm2VKGZyqlHOnGPkHK17YalB3nPYyPbklQ3cbQD4W1BXahkAQF0ze3/q19MNOyf6ooQn\nA/gnTz8pvWalxL4K9gTMUpvsAj3UCw0FgD1KJ0XRQhQAQGYlmSm1Mi7ZC1y4wd78+QbIzefpVuPY\navq4iZrikFYUkW3m72ESbmi9CzY7PshN99vwCgAw+t6OIYqQCp68OM+283wDXQixQ4L7WnjQEprB\nTM/Fz4/aJUy2lXIAKNsIxly8wTYaOq84Hyo0fSS5vGIK/8uaodyOJD9xOljo7Xr9R/w6qIwif4/g\nVO3K1j3cmKO1IGnQyw6Te6vIvXLHwtwgbMVQcqFa40qEdKXcI2llT4SBssa2U76+boLpzoN0qDuS\ndE0rMcRDGGL8vzMFziFdKXe58wEAKAUFGebJD5MqD3YVg8yVTQ1fV+zQmvwkB7PkFDnHexPpvbGY\nVexFLYEkkOYF01g9FZw5jlh7JIU78kKo8BYYeR4LrqF9Lx7GqbG7cAiYYZN+fobdVn5LeW+uMDcI\nSw2ihsgdj/Cg7ntRC2ul7THZm8ypRjkgLzA9O1x4w5JwDQOz+oivgMbeg+XbDuUhbu3Xacb5iOPM\nlaF1AzZj6G4OoJjrYJo8ZEwfd+kRMclPTDJXNiUmh1Kj8lL4XEyAlDuVWVhIvh6yDYe8e5xb0VEL\nu0rPwZiF0fi1Y49zP5qE2zAZFWh1XBaOi94ujF9XxO48Vs3K2r1yPJ2DnwZlpaI3xHOyzpvBHvds\ntFXFhOxOmfIjSAV7oomVj/qE1nCN3AlERrQX1VPhvHakBVPxb/Xn52o938epbXCdlIv4nUf5+eaE\njcwdKL3FkMo9Kxqn11uQbBjOs2GUpAKbmzC1ZgS5zMgAb0fiPipxcQH3744O+NOyaJw1nli/OJJf\nBCaOgjfzyblp2cIsa+3YkzVs5dzj5FxQUBJ3HbgvjcF/kTo2pRc/GQBgTxWxW+56xWFy2RlymYqM\n9HBvcWJBKleQPpJcntKLilXyj3s6YWLBIDwzYzQnuZ2lHP8YyLdJ8Cm+SZyXkmV9vLBeS33je1KD\nPhrcZgXeAKMWa0YqKEhxA5JbaKS/Gs79N5ym2hnwnCBv6Jry9yg88+Xewp9A4dldbBAeSK6O0nMA\nAMgYS6yS2uguvZRI//g0t9FWcnx0ituYVYmyQGG2syCCXzC+J9VmXcTfDTu27lLJHKsRZb2Mije5\nsRS07ohBvxAqvJU1hvuxdJJQsieJ2LBoMP7z9DAqKTFAFzExWBe/chi58NIz/KWlUfwqMNMwi/EQ\nB68ZQS4zGOKn65GkSzfRR0zInUBkyK1neDtjPD+SenHvWG6vlAy5V1Ge2pREyUg/eZ04qXApfS6N\nOzf7UWpqWHeK9nTCRIw3FRjsKhkuIclYH2GslNzGdHdADyQdVmmKNT2MSjLeEd+YTeXkJlvLkrJX\nmFF7R3GnFXrvWG6v8e8iwQclAACdUYG2K23lpDhMXm7kWuYOxHNleltJ3HUQnOQnBif58bbcJZF+\nubfwDoUIDADzTl4TC0HaDU0P9xYnnpnIxWeOI3buriJ3VzdDtasOXOM8hbir04TXlO4j+wqRPVxF\nECUj/VA1HJKR6758K2I5i38gq0rIVcO9uXgAoHOqEYzSt9+F3+UBbZukNNX8RyTXLtTGQAsvdkhS\n1LAsPKz0aa5Erl0AoM9M5H7ydcV+VY1cy/9EcUsAgFlfSq5PU6hX1RPx0SluYyfZqJj5soRYBQBQ\n0cA15V5FSnFNdGqA+OLqOC4jawz34+YRXPbrfYSFoJKwk3MV5agJodRzltaz9fl1HZdQtrmE3T/h\nwD2Pz7OHiC5NbPtz3LsgRS+crZCbYg3oQemVvGvxXmK8ZLkv1VeqXCul9Wx9/G48HFSM9pwk/vu/\nR+GZhqSxrF9YxUVcTa665P04WaXhjoCpvQNFTAsUrywi3tNvJn2MPR2tayM2kym/Dh039aQgibUo\ntZX0f5xql2NgU3aWs0ePVbNlThg5OlPtjzti0eK0YDmklEFuBHHRgTModERLo/ilk0OpNutN0V5U\nz7xkLtf4OnNsMwN5VWzRxO8pxc31Qt1gyPuD7k3zl58ll6vVqUlBzl5ja8Zn4/FKDdsYJi4Lx3lu\nFMPpDWKfNw7zi01DIzLK2LzSBrDVaj4z/wTZbhM8qV0e1fz/eyvYE3JhC1rQujn2gO4wwNI2zMWV\nEts9B7mYtKvNYg2o9OJbR3Jbi6egwyuHkQu3JBIrC1K5AjBRKj9n0axIbwPby+7mzcjDM1RkAABg\nNpUh1VAnzYs9eyvYE2raaSOY8dl4vBYX4DOH8DM2kIf55GfiE6lI4AAnMcC0DIGo+sxm5BFaXpAk\nSkF6xgTJGPe22H3elECX9gudcrZY+U2uUcM0kw5zg6Fv9BUWyaXjBrpA4DBfyqIdX9afZ7NmH8Nz\nQOEd5F5FeVoCSM36/MH2srt5w3bjYU2s9R+RkYEZl43H79UYgn2yhq2c8oNVSsJkV6H9fz3Cvy91\ncEA3sV0vrSUfpKqRawnPwOGWPKdgF1GTV8vDQTq4T4t85jKwu2iaGanIh2fJD8D6jktzCoIUK35i\nN79dgOfLyMF8VoQ1pR+Y/TAPV7HFQVvJoE9+JhbING4JTGUTFFqSn7CllD1o4fSP+fw88e+xu4Vp\ncidIhcJojUE6x7B1od+QvVcVE++bI9tYX3GMFoPVTSe6SZWr2UjmonfBOn9nME20AwrJp91mlLF5\nrTs/ar1vJr8O7TE9P8lPTDIOBzGXDwvZdVJKUnsH6rR+jcCih1nbzAl/PcK/H7EDDzT3ByABs+QU\nucR/kxhlaX7C3gr2hN/XpN8/fyLnaZCFyb2Kto/ag0e/nse/Z66sV+9oT/SqvsXdnZXLL4jKxFHL\nz5LzWz9GoyYfnZfM5aptPnC5GV2Wlg9Z/QUsYzhBlJryMWo73b/wAz9v6WlyKWh4H68cxa/G7BCS\n//wjfsP0/Faj32I+LGTXtdZ7v715x7HiR1KNsclXbv3dsOM4PzQu2ZdPHu4txsvkChvDVDZB5X/L\nyP9uuIA22nLbUW9njOP1KH6opzA0yEUM8ncW/RvuosaKJlRReB2dPFCFDqptjGZgehiVtHE4twFa\nNxZbcopc8u5xboU18oXTlIe/M/j7OoGvjgSd6U6IJALCz1H0L2DQcaUU3ZCulLvpB3466tPMr/Sn\nnjL6whUzvwDP/6CQXafl2tYMyydieggxAS6ivwMJDtdbUP3FW6js0FUid99lcZ+xA2ZhNH5tahD/\nTFcddNv2C7H1jcO81fsUBnWlXC9O4hoAAG7ehTK177t3yGegDehdsK6XK+rp5wT+ekdRr3cEvQsl\nugAA1N1BtZXNqPJCI5SZkx77e+Lvhh31Tkh/6y40dqad5wHubQ/7VC/xKT8n0a+skbiwuUzc3FFf\n5wp0x67eTsjregvUd9ZPd8tRmEZkR9LiGNC4cUaHKogdO52JTQnkZ9OChKkAQOfXoT0xO6Q3zTPG\npt9Jt2Ons7IwGr9mUA4AYF48TM5Qu8YUm+1zZcdOZ2JmP2ri6rj7ofbMm/nkXEumyPYplp0/HDP6\nUCmtm8fRAAA51WjbqF3CZK3X220QO39YWreivR993sRCRcg2MsSczEq7DWLnoSfSk/K/OQNdeLEv\nNQHg3o4ymeOItSapGcygTBxtTdqxfQSx81CyYBCe2Zp8Z+xybpPa23877m/JTi6qm1fbsdPZobuI\nBmVolzadX4eOT84hJlc0sFZ/rto+xbLzUJJ/jTgO7cNYmPkFeH7MDiG5ooGzybfc7VMsOw8tS2Pw\nX+YP4Oc3cdD0nxJy7epitNoWYUtIKlPOjh07duzYsWPHjh07dh4A/wcMRwRD90zgYwAAAABJRU5E\nrkJggg==",
                    ar = function (e) {
                        c()(n, e);
                        var t = nr(n);

                        function n() {
                            var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                            return i()(this, n),
                                e = t.call(this, r),
                                v()(u()(e), "template", e.createTemplate(Gn || (Gn = Jn()(['\n  <gp-poster class="goldplay__screen--poster">\n  <img src="', '" width="', '" data-display="', '" heigth="', '" class="goldplay__screen--poster-image">\n  <gp-speed class="goldplay__screen--poster-speed">', "</gp-speed>\n  </gp-poster>\n  "])), "poster", "width", "display", "height", "speed")),
                                v()(u()(e), "data", {
                                    poster: "",
                                    status: "",
                                    display: "show",
                                    speed: "",
                                    width: "",
                                    height: ""
                                }),
                                v()(u()(e), "options", {}),
                                e.options = r,
                                r.player.poster ? e.data.poster = r.player.poster : e.data.poster = ir,
                                Object.assign(e.data, r.data),
                                e.init(),
                                e
                        }

                        return o()(n, [{
                            key: "resetPosition",
                            value: function () {
                                if (this.element) {
                                    var e = this.element.parentNode.offsetWidth
                                        , t = this.element.parentNode.offsetHeight;
                                    this.element.style.width = e + "px",
                                        this.element.style.marginTop = (t - this.element.offsetHeight - 20) / 2 + "px"
                                }
                            }
                        }, {
                            key: "bindEvent",
                            value: function () {
                                var e = this;
                                this.events.on(de.LoaderUpdateSpeed, (function (t) {
                                        "show" === e.data.display && (e.data.speed = tr.formatBytes(t.speed) + " /s")
                                    }
                                ))
                            }
                        }, {
                            key: "hide",
                            value: function () {
                                "hide" !== this.data.display && (this.element.style.opacity = 0,
                                    this.element.style.display = "none",
                                    this.data.display = "hide")
                            }
                        }]),
                            n
                    }(Qn);

                function or(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var sr = function (e) {
                    c()(n, e);
                    var t = or(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "template", e.createTemplate(rr || (rr = Jn()(['\n    <gp-control class="goldplay__control--container ', '" style="width:', "px;height:", "px;opacity:", '" data-status="', '">\n      ', "\n      ", "\n      ", "\n    </gp-control>\n  "])), "containerFloatCss", "width", "height", "opacity", "status", "progressBarName|component", "sideControlBarName|component", "nearControlBarName|component")),
                            v()(u()(e), "hideDelayTime", void 0),
                            v()(u()(e), "hideTimeCount", void 0),
                            v()(u()(e), "data", {
                                progressBarName: "progressBar",
                                sideControlBarName: "sideControlBar",
                                nearControlBarName: "nearControlBar",
                                width: "",
                                height: "",
                                opacity: 1,
                                containerFloatCss: "",
                                display: "show",
                                status: ""
                            }),
                            v()(u()(e), "options", {}),
                            e.options = r,
                            e.hideDelayTime = e.options.player.controlBarAutoHideTime || 3,
                        r.player.controlBarAutoHide && (e.data.containerFloatCss = e.options.cssName.controlContainerFloat,
                            e.resetPosition()),
                            Object.assign(e.data, r.data),
                            e.init(),
                            e
                    }

                    return o()(n, [{
                        key: "initProps",
                        value: function () {
                            this.hideTimeCount = this.hideDelayTime
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            var e = this
                                , t = this.options;
                            t.player.controlBarAutoHide && (t.$container.addEventListener("mousemove", (function () {
                                    e.hideTimeCount <= 0 && (e.data.display = "show",
                                        e.show()),
                                        e.hideTimeCount = e.hideDelayTime
                                }
                            )),
                                setInterval((function () {
                                        e.hideTimeCount > 0 ? e.hideTimeCount -= 1 : "hide" !== e.data.display && (e.data.display = "hide",
                                            e.hide())
                                    }
                                ), 100))
                        }
                    }, {
                        key: "setSize",
                        value: function (e, t) {
                            void 0 !== e && (this.data.width = e),
                            void 0 !== t && (this.data.height = t)
                        }
                    }, {
                        key: "show",
                        value: function () {
                            var e, t = this;
                            this.options.player.controlBarAutoHide ? (clearTimeout(e),
                                e = setTimeout((function () {
                                        t.data.opacity = 1
                                    }
                                ), 1)) : this.data.opacity = 1
                        }
                    }, {
                        key: "hide",
                        value: function () {
                            this.data.opacity = 0
                        }
                    }, {
                        key: "resetPosition",
                        value: function () {
                            this.setSize(this.options.$container.offsetWidth, this.options.player.controlBarHeight)
                        }
                    }]),
                        n
                }(Qn)
                    , ur = x.a.get("Delegator.js");

                function lr(e) {
                    return "undefined" != typeof HTMLElement ? e instanceof HTMLElement : "object" === S()(e) && (1 === e.nodeType && "string" == typeof e.nodeName)
                }

                function cr(e) {
                    e.preventDefault(),
                        e.stopPropagation()
                }

                function hr(e, t, n, r, i) {
                    var a = function (e, t) {
                        if (e && e.matches) {
                            if (!Array.isArray(t))
                                return e.matches(t);
                            for (var n = 0, r = t.length; n < r; n++)
                                if (e.matches(t[n]))
                                    return !0
                        }
                        return !1
                    };

                    function o(e) {
                        for (var t = (e = e || window.event).target || e.srcElement, i = e.currentTarget, o = !0; o && t !== i && t;) {
                            if (a(t, n) && (o = !1 !== r.call(t, e)),
                                !o)
                                return void cr(e);
                            t = t.parentNode
                        }
                    }

                    r.__delegateWrapper = o,
                        function (e, t, n, r) {
                            void 0 === r && (r = "blur" === t || "focus" === t),
                            lr(e) && e.addEventListener(t, n, r)
                        }(e, t, o, i)
                }

                var fr, dr = function () {
                    function e(t) {
                        return i()(this, e),
                            v()(this, "element", null),
                            lr(t) ? this.element = t : ur.error("constructor", "new instance", "element:", this.element),
                            this
                    }

                    return o()(e, [{
                        key: "off",
                        value: function (e, t, n) {
                            return t.__delegateWrapper && delete (t = t.__delegateWrapper).__delegateWrapper,
                                this.element.removeEventListener(e, t, n),
                                this
                        }
                    }, {
                        key: "on",
                        value: function (e, t, n, r) {
                            var i = this;
                            return Array.isArray(t) ? t.forEach((function (t) {
                                    hr(i.element, e, t, n, r)
                                }
                            )) : hr(this.element, e, t, n, r),
                                this
                        }
                    }, {
                        key: "once",
                        value: function (e, t, n, r) {
                            return this.on(e, t, n, {
                                capture: r,
                                once: !0
                            }),
                                this
                        }
                    }]),
                        e
                }(), pr = null, yr = function (e) {
                    return "string" == typeof e && (e = document.querySelector(e)),
                        pr ? pr.element = e : pr = new dr(e),
                        pr
                }, vr = function () {
                    function e(t, n) {
                        var r = n.$container
                            , a = n.type
                            , o = n.scope
                            , s = n.onStart
                            , u = n.onDrag
                            , l = n.onRelease;
                        i()(this, e),
                            v()(this, "$container", null),
                            v()(this, "$ele", null),
                            v()(this, "active", !1),
                            v()(this, "offsetX", 0),
                            v()(this, "offsetY", 0),
                            v()(this, "offsetLeft", 0),
                            v()(this, "offsetTop", 0),
                            v()(this, "orginOffsetLeft", 0),
                            v()(this, "orginOffsetTop", 0),
                            v()(this, "orginOffsetWidth", 0),
                            v()(this, "orginOffsetHeight", 0),
                            v()(this, "initialX", 0),
                            v()(this, "initialY", 0),
                            v()(this, "type", "default"),
                            v()(this, "scope", {}),
                            this.$container = r || document.body,
                            this.$ele = t,
                            this.type = a,
                            this.scope = o,
                            this.eventsList = {},
                            this.onStart = s,
                            this.onDrag = u,
                            this.onRelease = l,
                            this.bindEvent()
                    }

                    return o()(e, [{
                        key: "addEventListener",
                        value: function (e, t, n) {
                            var r = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
                            return e.addEventListener(t, n, r),
                                {
                                    destroy: function () {
                                        e.removeEventListener(t, n)
                                    }
                                }
                        }
                    }, {
                        key: "removeEventListenerAll",
                        value: function () {
                            var e = this;
                            Object.keys(this.eventsList).forEach((function (t) {
                                    e.eventsList[t].destroy()
                                }
                            ))
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            var e = this;
                            this.eventsList.mousedown = this.addEventListener(this.$container, "mousedown", (function (t) {
                                    e.start(t)
                                }
                            ), !1),
                                this.eventsList.mouseup = this.addEventListener(this.$container, "mouseup", (function (t) {
                                        e.release(t)
                                    }
                                ), !1),
                                this.eventsList.mousemove = this.addEventListener(this.$container, "mousemove", (function (t) {
                                        e.drag(t)
                                    }
                                ), !1)
                        }
                    }, {
                        key: "start",
                        value: function (e) {
                            e.target === this.$ele && (void 0 === this.scope && void 0 !== this.$container && (this.scope = {
                                left: this.$container.offsetLeft,
                                right: this.$container.offsetLeft + this.$container.offsetWidth,
                                top: this.$container.offsetTop,
                                bottom: this.$container.offsetTop + this.$container.offsetHeight
                            }),
                                this.offsetLeft = this.$ele.offsetLeft,
                                this.offsetTop = this.$ele.offsetTop,
                                this.active = !0,
                                this.initialX = e.clientX,
                                this.initialY = e.clientY,
                                this.orginOffsetLeft = this.$ele.offsetLeft,
                                this.orginOffsetTop = this.$ele.offsetTop,
                                this.orginOffsetWidth = this.$ele.offsetWidth,
                                this.orginOffsetHeight = this.$ele.offsetHeight,
                            "function" == typeof this.onStart && this.onStart.call(this, this.offsetX, this.offsetY, e, this))
                        }
                    }, {
                        key: "release",
                        value: function (e) {
                            this.active = !1,
                            "function" == typeof this.onRelease && this.onRelease.call(this, this.offsetX, this.offsetY, e, this)
                        }
                    }, {
                        key: "drag",
                        value: function (e) {
                            this.active && (e.preventDefault(),
                                e.stopPropagation(),
                                this.offsetX = e.clientX - this.initialX + this.offsetLeft,
                                this.offsetY = e.clientY - this.initialY + this.offsetTop,
                                this.setPosition(e))
                        }
                    }, {
                        key: "setPosition",
                        value: function (e) {
                            switch (this.type) {
                                case "vertical":
                                    this.offsetX = this.orginOffsetLeft,
                                    this.offsetY < this.scope.top && (this.offsetY = this.scope.top),
                                    this.offsetY > this.scope.bottom - this.orginOffsetHeight && (this.offsetY = this.scope.bottom - this.orginOffsetHeight);
                                    break;
                                case "level":
                                    this.offsetY = this.orginOffsetTop,
                                    this.offsetX > this.scope.right - this.orginOffsetWidth && (this.offsetX = this.scope.right - this.orginOffsetWidth),
                                    this.offsetX < this.scope.left && (this.offsetX = this.scope.left);
                                    break;
                                default:
                                    isNaN(this.scope.right) || this.offsetX > this.scope.right - this.orginOffsetWidth && (this.offsetX = this.scope.right - this.orginOffsetWidth),
                                    isNaN(this.scope.left) || this.offsetX < this.scope.left && (this.offsetX = this.scope.left),
                                    isNaN(this.scope.top) || this.offsetY < this.scope.top && (this.offsetY = this.scope.top),
                                    isNaN(this.scope.bottom) || this.offsetY > this.scope.bottom - this.orginOffsetHeight && (this.offsetY = this.scope.bottom - this.orginOffsetHeight)
                            }
                            this.$ele.style.left = this.offsetX + "px",
                                this.$ele.style.top = this.offsetY + "px",
                            "function" == typeof this.onDrag && this.onDrag.call(this, this.offsetX, this.offsetY, e, this)
                        }
                    }, {
                        key: "destroy",
                        value: function () {
                            this.$ele.parentNode.removeChild(this.$ele),
                                this.removeEventListenerAll()
                        }
                    }]),
                        e
                }(), gr = function (e, t) {
                    return new vr(e, t)
                };

                function mr(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var br, kr = function (e) {
                    c()(n, e);
                    var t = mr(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "template", e.createTemplate(fr || (fr = Jn()(['\n    <gp-control-progressbar class="goldplay__progress-bar ', '" data-status="', '">\n      <div class="goldplay__progressbar--load ', '">\n      </div>\n      <div class="goldplay__progressbar--play ', '">\n      </div>\n      <span class="goldplay__progressbar--dot ', '" title="', '"></span>\n    </gp-control-progressbar>\n  '])), "progressBarHoverCss", "status", "progressBarLoadHoverCss", "progressBarPlayHoverCss", "progressBarDotHoverCss", "time")),
                            v()(u()(e), "options", {}),
                            v()(u()(e), "data", {
                                playWidth: "",
                                dot: "",
                                time: "",
                                status: ""
                            }),
                            v()(u()(e), "setProgressBarSize", (function (t) {
                                    e.$progressBarPlay.style.width = t + "px"
                                }
                            )),
                            e.options = r,
                            Object.assign(e.data, r.data),
                            e.init(),
                            e
                    }

                    return o()(n, [{
                        key: "watch",
                        value: function () {
                            var e = this.options.cssName;
                            "dragstart" === this.data.status ? (this.data.progressBarHoverCss = e.progressBarHover,
                                this.data.progressBarLoadHoverCss = e.progressBarLoadHover,
                                this.data.progressBarPlayHoverCss = e.progressBarPlayHover,
                                this.data.progressBarDotHoverCss = e.progressBarDotHover) : "dragend" === this.data.status && (this.data.progressBarHoverCss = "",
                                this.data.progressBarLoadHoverCss = "",
                                this.data.progressBarPlayHoverCss = "",
                                this.data.progressBarDotHoverCss = "")
                        }
                    }, {
                        key: "afterInit",
                        value: function () {
                        }
                    }, {
                        key: "initProps",
                        value: function () {
                            var e = this.element
                                , t = this.options.cssName;
                            this.$progressDragDot = e.querySelector("." + t.progressBarDot),
                                this.$progressBarPlay = e.querySelector("." + t.progressBarPlay),
                                this.$progressBarLoad = e.querySelector("." + t.progressBarLoad),
                                this.timer = this.getComponent("timer"),
                                this.pauseButton = this.getComponent("pauseButton")
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            var e = this
                                , t = this.options.cssName
                                , n = !1;
                            this.events.on(de.PlayerTimeUpdate, (function (t) {
                                    var r = e.options.loadData.sourceData.duration;
                                    if (!n && t && r) {
                                        var i = t / 1e3 / r * e.progressBarWidth;
                                        e.setProgressPosition(i),
                                            e.timer.data.time = er.formatHHMMSS(t / 1e3)
                                    }
                                }
                            )),
                                this.events.on(de.PlayerbufferUpdate, (function (t) {
                                        !n && t && e.updateProgressLoad(t)
                                    }
                                )),
                                yr(this.options.$controlBarContainer).on("click", "." + t.progressBar, (function (n) {
                                        if (n.target !== e.$progressDragDot) {
                                            var r = (e.options.loadData.sourceData.duration || 0) / e.progressBarWidth
                                                , i = 0;
                                            n.target.classList.contains(t.progressBarLoad) && (i = n.target.offsetLeft - n.target.parentNode.offsetLeft);
                                            var a = i + n.offsetX
                                                , o = a * r * 1e3;
                                            return e.setProgressPosition(a),
                                                e.logger.info("bindEvent", "click to seek", "seekTime:", o, "offsetX:", a),
                                            n.target !== e.$progressBarLoad && e.clearLoadBar(n.offsetX),
                                                e.timer.data.time = er.formatHHMMSS(o / 1e3),
                                                e.events.emit(de.PlayerOnSeek, o),
                                                !1
                                        }
                                    }
                                )),
                                this.progressDragEvent = gr(this.$progressDragDot, {
                                    $container: document.body,
                                    type: "level",
                                    scope: {
                                        left: this.progressBarLeft,
                                        right: this.progressBarLeft + this.progressBarWidth,
                                        top: this.$progressDragDot.offsetTop,
                                        bottom: this.$progressDragDot.offsetTop + this.$progressDragDot.offsetHeight
                                    },
                                    onStart: function () {
                                        n = !0,
                                            e.data.status = "dragstart"
                                    },
                                    onDrag: function (t) {
                                        var n;
                                        n = e.options.player.controlBarAutoHide ? t : t - e.options.$controlBarContainer.offsetLeft;
                                        var r = 0
                                            , i = e.$progressDragDot.offsetWidth;
                                        e.progressBarWidth - n <= i && (r = i),
                                            e.setProgressBarSize(n),
                                            e.data.status = "draging";
                                        var a = e.getSeekTime(e.progressBarWidth - r);
                                        e.timer.data.time = er.formatHHMMSS(a / 1e3),
                                            e.data.time = e.timer.data.time
                                    },
                                    onRelease: function (t, r, i) {
                                        if (n) {
                                            var a = e.getSeekTime();
                                            i.target !== e.$progressBarLoad && e.clearLoadBar(t),
                                                e.events.emit(de.PlayerOnSeek, a),
                                                e.logger.info("bindEvent", "onDrag release seek", "seekTime:", a),
                                                e.data.status = "dragend",
                                                n = !1
                                        }
                                    }
                                })
                        }
                    }, {
                        key: "setProgressPosition",
                        value: function (e) {
                            var t = Math.min(e, this.progressBarWidth)
                                , n = this.$progressDragDot
                                , r = this.progressBarWidth
                                , i = 0
                                , a = n.offsetWidth / 2;
                            t > r || r - t <= a ? i = a - (r - t) : t <= a && (i = -(a - t));
                            var o = t - i - n.offsetWidth / 2;
                            this.setProgressPlayWidth(t),
                                this.setProgressDragDotLeft(o + this.progressBarLeft)
                        }
                    }, {
                        key: "setProgressPlayWidth",
                        value: function (e) {
                            this.$progressBarPlay.style.width = e + "px"
                        }
                    }, {
                        key: "setProgressDragDotLeft",
                        value: function (e) {
                            this.$progressDragDot.style.left = e + "px"
                        }
                    }, {
                        key: "getProgressPlayLeftWidth",
                        value: function () {
                            return {
                                offsetLeft: this.$progressBarPlay.offsetLeft,
                                offsetWidth: this.$progressBarPlay.offsetWidth
                            }
                        }
                    }, {
                        key: "getProgressLoadLeftWidth",
                        value: function () {
                            return {
                                offsetLeft: this.$progressBarLoad.offsetLeft,
                                offsetWidth: this.$progressBarLoad.offsetWidth
                            }
                        }
                    }, {
                        key: "setProgressLoadLeftWidth",
                        value: function (e, t) {
                            var n = this.progressBarLeft + this.progressBarWidth;
                            (e = Math.min(e, n)) + t > n && (t = n - e),
                                this.$progressBarLoad.style.left = e + "px",
                                this.$progressBarLoad.style.width = t + "px"
                        }
                    }, {
                        key: "updateProgressLoad",
                        value: function (e) {
                            var t = this.options.loadData.sourceData.duration;
                            if (t) {
                                var n = this.progressBarWidth
                                    , r = this.progressBarLeft
                                    , i = e[0] / 1e3 / t * n
                                    , a = e[1] / 1e3 / t * n
                                    , o = Math.floor(r + i)
                                    , s = Math.floor(a - i);
                                this.setProgressLoadLeftWidth(o, s)
                            }
                        }
                    }, {
                        key: "getSeekTime",
                        value: function (e, t) {
                            var n = this.progressBarWidth
                                , r = (t = t || this.options.loadData.sourceData.duration || 0) / (e || n);
                            return this.$progressBarPlay.offsetWidth * r * 1e3
                        }
                    }, {
                        key: "clearLoadBar",
                        value: function (e) {
                            e < this.$progressBarLoad.offsetLeft - this.progressBarLeft && (this.$progressBarLoad.style.width = "0px")
                        }
                    }, {
                        key: "getDragDotPosition",
                        value: function () {
                            return {
                                offsetLeft: this.$progressDragDot.offsetLeft,
                                offsetTop: this.$progressDragDot.offsetTop,
                                left: this.$progressDragDot.style.left,
                                top: this.$progressDragDot.style.top
                            }
                        }
                    }, {
                        key: "progressBarWidth",
                        get: function () {
                            return this.element.offsetWidth
                        }
                    }, {
                        key: "progressBarLeft",
                        get: function () {
                            return this.element.offsetLeft
                        }
                    }, {
                        key: "clearDragDotTop",
                        value: function () {
                            this.$progressDragDot.style.top = ""
                        }
                    }]),
                        n
                }(Qn);

                function xr(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Pr, wr, _r = function (e) {
                    c()(n, e);
                    var t = xr(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "template", e.createTemplate(br || (br = Jn()(['\n  <gp-button class="goldplay__control--play" data-status="', '" title="', '">\n  <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n  viewBox="0 0 232.153 232.153" width="20" height="20" style="enable-background:new 0 0 232.153 232.153;" xml:space="preserve">\n  <g >\n  <path style="fill-rule:evenodd;clip-rule:evenodd;" d="M203.791,99.628L49.307,2.294c-4.567-2.719-10.238-2.266-14.521-2.266\n    c-17.132,0-17.056,13.227-17.056,16.578v198.94c0,2.833-0.075,16.579,17.056,16.579c4.283,0,9.955,0.451,14.521-2.267\n    l154.483-97.333c12.68-7.545,10.489-16.449,10.489-16.449S216.471,107.172,203.791,99.628z" fill="#f1f1f1"/>\n  </g>\n  </svg>\n  </gp-button>\n  '])), "status", "title")),
                            v()(u()(e), "data", {
                                title: "play",
                                play: ">"
                            }),
                            v()(u()(e), "options", {}),
                            e.options = r,
                            Object.assign(e.data, r.data),
                            e.init(),
                            e
                    }

                    return n
                }(Qn);

                function Br(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Tr,
                    Er = Mn.create(Pr || (Pr = Jn()(['\n<svg style="display:', '" class="goldplay__control--pausing" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="20px" height="20px" viewBox="0 0 26 26" style="background:none" xml:space="preserve">\n<g>\n<path d="M2.667,0h6v26h-6V0z M15.333,0v26h6V0H15.333z" fill="#f1f1f1"/>\n</g>\n</svg>\n'])), "pauseHide"),
                    Sr = function (e) {
                        c()(n, e);
                        var t = Br(n);

                        function n() {
                            var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                            return i()(this, n),
                                e = t.call(this, r),
                                v()(u()(e), "template", e.createTemplate((function (e, t) {
                                        return t(wr || (wr = Jn()(['\n  <gp-button class="goldplay__control--pause" title="', '" status="', '">\n  ', "\n  </gp-button>\n  "])), "title", "status", "icon|html")
                                    }
                                ))),
                                v()(u()(e), "data", {
                                    title: "pause",
                                    pauseHide: "",
                                    pauseLoadingHide: "none",
                                    icon: Er,
                                    status: "",
                                    display: ""
                                }),
                                v()(u()(e), "options", {}),
                                e.options = r,
                                Object.assign(e.data, r.data),
                                e.init(),
                                e
                        }

                        return o()(n, [{
                            key: "watch",
                            value: function () {
                                "pauseloading" === this.data.status ? (this.data.pauseHide = "none",
                                    this.data.pauseLoadingHide = "inline-block",
                                    this.data.title = "loading",
                                    this.data.icon = '\n<svg version="1.1" class="goldplay__control--pause-loading" style="display:${\'pauseLoadingHide\'}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="25px" height="25px" viewBox="0 0 612 792" style="background:none;margin: -4px 0 0 -5px;" xml:space="preserve">\n<linearGradient id="goldplay-pause-loading-gradient" gradientUnits="userSpaceOnUse" x1="1.98" y1="784.6123" x2="26.2101" y2="770.623" gradientTransform="matrix(21.8571 0 0 21.8571 -2.0895 -16600.5293)">\n    <stop offset="0.1682" style="stop-color:#f1f1f1;stop-opacity:0"></stop>\n    <stop offset="0.7502" style="stop-color:#f1f1f1"></stop>\n    <stop offset="1" style="stop-color:#f1f1f1"></stop>\n</linearGradient>\n<path style="transform-origin: center center;animation: goldplay-rotate-360 .8s linear infinite;" fill="url(#goldplay-pause-loading-gradient)" d="M306,133.714c144.257,0,262.286,118.028,262.286,262.286c0,144.257-118.029,262.286-262.286,262.286\n  C161.743,658.286,43.714,540.257,43.714,396C43.714,251.743,161.743,133.714,306,133.714 M306,90C137.7,90,0,227.7,0,396\n  s137.7,306,306,306s306-137.7,306-306S474.3,90,306,90L306,90z">\n    <animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0" to="360" dur=".8s" repeatCount="indefinite" />\n</path>\n<g>\n    <g>\n        <path fill="#f1f1f1" d="M229.5,514.028L229.5,514.028c-13.114,0-21.857-8.742-21.857-21.856V295.457\n        c0-10.929,8.743-21.857,21.857-21.857l0,0c10.929,0,21.857,8.743,21.857,21.857v196.715\n        C251.357,503.1,242.614,514.028,229.5,514.028z"></path>\n        <path fill="#f1f1f1" d="M229.5,273.6c-13.114,0-21.857,8.743-21.857,21.857v196.715c0,10.928,8.743,21.856,21.857,21.856\n        s21.857-10.929,21.857-21.856V295.457C251.357,282.343,242.614,273.6,229.5,273.6L229.5,273.6z"></path>\n    </g>\n    <g>\n        <path fill="#f1f1f1" d="M382.5,518.4L382.5,518.4c-13.114,0-21.857-8.743-21.857-21.857V299.829\n        c0-10.929,8.743-21.857,21.857-21.857l0,0c10.929,0,21.857,8.743,21.857,21.857v196.714\n        C404.357,509.657,395.614,518.4,382.5,518.4z"></path>\n        <path fill="#f1f1f1" d="M382.5,277.972c-10.929,0-21.857,8.743-21.857,21.857v196.714c0,10.929,10.929,21.857,21.857,21.857\n        s21.857-10.929,21.857-21.857V299.829C404.357,288.9,393.429,277.972,382.5,277.972L382.5,277.972z"></path>\n    </g>\n</g>\n</svg>\n') : "pause" === this.data.status && (this.data.pauseHide = "inline-block",
                                    this.data.pauseLoadingHide = "none",
                                    this.data.title = "pause",
                                    this.data.icon = Er)
                            }
                        }]),
                            n
                    }(Qn);

                function Cr(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Rr, Lr, Ar, Dr = function (e) {
                    c()(n, e);
                    var t = Cr(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "template", e.createTemplate(Tr || (Tr = Jn()(['\n  <gp-button class="goldplay__control--replay" title="', '" data-display="', '">\n  <svg version="1.0" xmlns="http://www.w3.org/2000/svg"\n  width="24px" height="24px" viewBox="0 0 245.000000 206.000000"\n  preserveAspectRatio="xMidYMid meet">\n <g transform="translate(0.000000,206.000000) scale(0.100000,-0.100000)"\n fill="#f1f1f1" stroke="1">\n <path d="M1250 2046 c-286 -55 -525 -211 -681 -445 -91 -136 -152 -302 -167\n -453 -12 -119 3 -108 -143 -109 -70 -1 -156 -4 -192 -8 l-65 -6 262 -265 262\n -265 266 265 265 265 -62 6 c-35 4 -123 7 -197 8 l-134 1 7 69 c26 284 232\n 543 504 635 201 69 404 53 596 -47 62 -32 103 -63 177 -137 83 -83 102 -108\n 142 -190 63 -130 77 -193 77 -340 0 -178 -37 -298 -134 -435 -91 -126 -220\n -224 -369 -278 -72 -26 -99 -31 -218 -35 -117 -4 -146 -1 -215 17 -104 29\n -205 79 -283 142 l-63 52 -89 -89 c-49 -49 -89 -96 -89 -106 0 -24 154 -136\n 253 -185 89 -44 177 -74 272 -95 84 -17 303 -15 391 5 403 91 691 371 795 772\n 19 76 23 114 22 240 0 129 -4 164 -27 249 -99 377 -406 673 -778 751 -104 22\n -297 28 -385 11z"/>\n <path d="M1227 1418 c-9 -68 -7 -695 2 -770 l6 -57 240 200 c132 110 251 210\n 264 223 l23 24 -257 213 c-141 118 -260 215 -264 217 -5 1 -11 -21 -14 -50z"/>\n </g>\n </svg>\n  </gp-button>\n  '])), "title", "display")),
                            v()(u()(e), "data", {
                                title: "replay",
                                display: "",
                                replay: "->"
                            }),
                            v()(u()(e), "options", {}),
                            e.options = r,
                            Object.assign(e.data, r.data),
                            e.init(),
                            e
                    }

                    return n
                }(Qn);

                function Or(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Mr,
                    Ir = Mn.create(Rr || (Rr = Jn()(['\n<svg xmlns="http://www.w3.org/2000/svg" style="display:', '" width="20px" height="20px" viewBox="0 0 24 24" style="margin-left: -5px;">\n<path d="M5.2 7.68l6.175-5.293a.5.5 0 0 1 .825.38v17.825a.5.5 0 0 1-.825.38L5.2 15.679H3a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1h2.2zm9 13.35v-2.375l.007-.003C16.852 17.493 19 14.897 19 11.479s-2.148-6.014-4.793-7.173a4.11 4.11 0 0 0-.007-.003V2c.027.006.054.012.082.02.852.221 1.274.453 1.436.535A10 10 0 0 1 21.2 11.48c0 4.106-2.474 7.633-6.013 9.174-.526.229-.583.284-.987.377zm0-13.973c1.5.925 2.5 2.582 2.5 4.473 0 1.892-1 3.55-2.5 4.473V7.057z" fill="#f1f1f1"></path>\n</svg>\n'])), "audioOnHide"),
                    Nr = Mn.create(Lr || (Lr = Jn()(['\n<svg xmlns="http://www.w3.org/2000/svg" style="display:', '" width="20px" height="20px" viewBox="0 0 24 24" style="margin-left: -5px;">\n<path d="M12.2 13.914v6.678a.5.5 0 0 1-.825.38L5.2 15.679H3a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1h2.2l.412-.353-2.558-2.558a.5.5 0 0 1 0-.707l.707-.707a.5.5 0 0 1 .707 0l16.849 16.849a.5.5 0 0 1 0 .707l-.707.707a.5.5 0 0 1-.707 0l-2.386-2.386a10 10 0 0 1-2.33 1.422c-.526.229-.583.284-.987.377v-2.375l.007-.003a8.332 8.332 0 0 0 1.717-1.014l-1.67-1.669a5.251 5.251 0 0 1-.054.034v-.089l-2-2zM8.373 4.96l3.002-2.572a.5.5 0 0 1 .825.38v6.019L8.373 4.959zm9.867 9.867c.48-.99.76-2.115.76-3.347 0-3.418-2.148-6.014-4.793-7.173a4.11 4.11 0 0 0-.007-.003V2c.027.006.054.012.082.02.852.221 1.274.453 1.436.535A10 10 0 0 1 21.2 11.48a9.954 9.954 0 0 1-1.326 4.98l-1.634-1.633zm-1.766-1.766L14.2 10.786V7.057a5.247 5.247 0 0 1 2.274 6.003z" fill="#f1f1f1"></path>\n</svg>\n'])), "audioOffHide"),
                    Ur = function (e) {
                        c()(n, e);
                        var t = Or(n);

                        function n() {
                            var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                            return i()(this, n),
                                e = t.call(this, r),
                                v()(u()(e), "template", e.createTemplate(Ar || (Ar = Jn()(['\n  <gp-volume class="goldplay__volume-bar">\n    <gp-overbox class="goldplay-hoverbox goldplay__volume-bar--handle">\n      <span class="goldplay__volume-bar--precent">', '</span>\n      <span class="goldplay__volume-bar--rod ', '" title="adjust volume"></span>\n      <span class="goldplay__volume-bar--size">&nbsp;</span>\n      <span class="goldplay__volume-bar--column">&nbsp;</span>\n    </gp-overbox>\n    <gp-button class="goldplay__volume-bar--audio ', '" title="', '" data-mute="', '" data-volume-size="', '"  data-last-volume="', '">\n    ', "\n    </gp-button>\n  </gp-volume>\n  "])), "dataPrecent", "volumeBarRodHoverCss", "audioOffClass", "title", "dataMute", "dataVolumeSize", "dataLastVolume", "icon|html")),
                                v()(u()(e), "options", {}),
                                v()(u()(e), "data", {
                                    audioONHide: "",
                                    audioOffHide: "",
                                    audioOffClass: "",
                                    dataVolumeSize: "",
                                    dataPrecent: "",
                                    dataLastVolume: "",
                                    dataMute: "",
                                    volumeBarRodHoverCss: "",
                                    icon: Ir,
                                    title: "turn off"
                                }),
                                e.options = r,
                                Object.assign(e.data, r.data),
                                e.init(),
                                e
                        }

                        return o()(n, [{
                            key: "watch",
                            value: function () {
                                this.data.dataPrecent = Math.floor(100 * this.data.dataVolumeSize),
                                    "" !== this.data.audioOffClass ? (this.data.dataMute = "true",
                                        this.data.audioOffHide = "inline-block",
                                        this.data.audioOnHide = "none",
                                        this.data.icon = Nr,
                                        this.data.title = "turn on") : (this.data.dataMute = "",
                                        this.data.audioOffHide = "none",
                                        this.data.audioOnHide = "inline-block",
                                        this.data.icon = Ir,
                                        this.data.title = "turn off")
                            }
                        }, {
                            key: "initProps",
                            value: function () {
                                var e = this.element
                                    , t = this.options.cssName;
                                this.INIT_VOLUME_SIZE = void 0 === this.options.player.defaultVolumeSize ? .5 : this.options.player.defaultVolumeSize,
                                    this.$volumeBarHandle = e.querySelector("." + t.volumeBarHandle),
                                    this.$volumeBarRod = e.querySelector("." + t.volumeBarRod),
                                    this.$volumeBarAudio = e.querySelector("." + t.volumeBarAudio),
                                    this.$volumeBarSize = e.querySelector("." + t.volumeBarSize),
                                    this.$volumeBarColumn = e.querySelector("." + t.volumeBarColumn),
                                    this.volumeBarColumnHeight = this.$volumeBarColumn.offsetHeight,
                                    this.volumeBarColumnTop = this.$volumeBarColumn.offsetTop,
                                    this.volumeBarRodHeight = this.$volumeBarRod.offsetHeight,
                                    this.volumeBarRodHeightHalf = this.volumeBarRodHeight / 2,
                                    this.volumeBarColumnRealTop = this.volumeBarColumnTop + this.volumeBarRodHeightHalf,
                                    this.volumeBarColumnMaxHeight = this.volumeBarColumnHeight - this.volumeBarRodHeight
                            }
                        }, {
                            key: "bindEvent",
                            value: function () {
                                var e, t = this, n = this.options.$controlBarContainer, r = this.options.cssName;
                                yr(n).on("mouseover", "." + r.volumeBar, (function () {
                                        clearTimeout(e),
                                            t.showVolumeBarHandle()
                                    }
                                )),
                                    yr(n).on("mousewheel", "." + r.volumeBarHandle, (function (e) {
                                            var n = e.wheelDelta / 500;
                                            n = t.data.dataVolumeSize + n,
                                                t.setVolumeSize(n),
                                                e.preventDefault(),
                                                e.stopPropagation()
                                        }
                                    )),
                                    yr(n).on("click", ["." + r.volumeBarColumn, "." + r.volumeBarSize], (function (e) {
                                            var n = 0;
                                            return e.target === t.$volumeBarColumn ? n = (t.$volumeBarColumn.offsetHeight - e.offsetY) / e.target.offsetHeight : e.target === t.$volumeBarSize && (n = t.$volumeBarColumn.offsetHeight - e.target.offsetHeight + e.offsetY,
                                                n = t.$volumeBarColumn.offsetHeight - n,
                                                n /= t.$volumeBarColumn.offsetHeight),
                                                t.setVolumeSize(n),
                                                !1
                                        }
                                    )),
                                    yr(n).on("click", "." + r.volumeBarAudio, (function (e) {
                                            return t.$volumeBarAudio.classList.contains(r.volumeBarAudioOff) ? t.setAudioOn(e.offsetY) : t.setAudioOff(e.offsetY),
                                                !1
                                        }
                                    ));
                                yr(n).on("mouseout", "." + r.volumeBar, (function (n) {
                                        e = setTimeout((function () {
                                                !function (e) {
                                                    var n = t.element
                                                        , r = {
                                                        y: n.offsetTop + t.$volumeBarHandle.offsetTop,
                                                        x: n.offsetLeft
                                                    };
                                                    return r.width = n.offsetWidth,
                                                        r.height = t.$volumeBarHandle.offsetHeight,
                                                    e.pageX > r.x && e.pageX < r.x + r.width && e.pageY > r.y && e.pageY < r.y + r.height
                                                }(n) ? t.hideVolumeBarHandle() : clearTimeout(e)
                                            }
                                        ), U.c.hideBarBoxTime)
                                    }
                                )),
                                    this.volumeDragEvent = gr(this.$volumeBarRod, {
                                        $container: this.element,
                                        type: "vertical",
                                        scope: {
                                            top: this.volumeBarColumnTop,
                                            right: 0,
                                            bottom: this.volumeBarColumnTop + this.volumeBarColumnHeight,
                                            left: 0
                                        },
                                        onStart: function () {
                                            t.data.volumeBarRodHoverCss = t.options.cssName.volumeBarRodHover
                                        },
                                        onDrag: function (e, n) {
                                            n -= 1,
                                                t.dragHandle(n)
                                        },
                                        onRelease: function () {
                                            t.data.volumeBarRodHoverCss = ""
                                        }
                                    })
                            }
                        }, {
                            key: "hideVolumeBarHandle",
                            value: function () {
                                this.$volumeBarHandle.style.visibility = "hidden"
                            }
                        }, {
                            key: "showVolumeBarHandle",
                            value: function () {
                                this.$volumeBarHandle.style.visibility = "visible"
                            }
                        }, {
                            key: "getVolume",
                            value: function () {
                                var e = (this.$volumeBarSize.offsetHeight - this.volumeBarRodHeight) / this.volumeBarColumnMaxHeight;
                                return e = Math.min(e, 1),
                                    (e = Math.max(e, 0)).toFixed(2)
                            }
                        }, {
                            key: "setVolume",
                            value: function (e) {
                                this.data.dataVolumeSize = Number(e),
                                    this.events.emit(de.PlayerOnVolume, e)
                            }
                        }, {
                            key: "initVolumeSize",
                            value: function () {
                                this.data.dataLastVolume = this.INIT_VOLUME_SIZE,
                                    this.setAudioOn()
                            }
                        }, {
                            key: "setAudioOn",
                            value: function () {
                                var e = this.data.dataLastVolume || 0;
                                this.setVolume(e);
                                var t = parseFloat(e, 10)
                                    , n = Math.floor(t * this.volumeBarColumnMaxHeight)
                                    , r = this.volumeBarColumnTop + (this.volumeBarColumnMaxHeight - n);
                                this.$volumeBarSize.style.marginTop = r + "px",
                                    this.$volumeBarSize.style.height = n + this.volumeBarRodHeight + "px",
                                    this.$volumeBarRod.style.top = r + "px",
                                    this.data.audioOffClass = ""
                            }
                        }, {
                            key: "setAudioOff",
                            value: function () {
                                this.setVolume(0),
                                    this.data.audioOffClass = this.options.cssName.volumeBarAudioOff;
                                var e = this.getVolume();
                                e > 0 && (this.data.dataLastVolume = e),
                                    this.$volumeBarSize.style.height = this.volumeBarRodHeight + "px",
                                    this.$volumeBarSize.style.marginTop = this.volumeBarColumnRealTop - this.volumeBarRodHeightHalf + this.volumeBarColumnMaxHeight + "px",
                                    this.$volumeBarRod.style.top = this.volumeBarColumnRealTop + this.volumeBarColumnMaxHeight - this.volumeBarRodHeightHalf + "px"
                            }
                        }, {
                            key: "dragHandle",
                            value: function (e) {
                                this.$volumeBarSize.style.marginTop = e + 1 + "px",
                                    this.$volumeBarSize.style.height = this.volumeBarColumnHeight - e + this.volumeBarRodHeight + "px";
                                var t = this.getVolume();
                                t <= 0 ? this.setAudioOff(e) : "true" == this.data.dataMute && this.setAudioOn(e),
                                    this.setVolume(t)
                            }
                        }, {
                            key: "setVolumeSize",
                            value: function (e) {
                                if ((e = e.toFixed(2)) >= 1 ? e = 1 : e < .001 && (e = 0),
                                e !== this.data.dataVolumeSize) {
                                    this.setVolume(e);
                                    var t = this.volumeBarColumnMaxHeight
                                        , n = t - e * t + this.volumeBarColumnTop;
                                    this.$volumeBarSize.style.marginTop = n + "px",
                                        this.$volumeBarSize.style.height = e * t + this.volumeBarRodHeight + "px",
                                        this.$volumeBarRod.style.top = n + "px",
                                        e <= 0 ? this.data.audioOffClass = this.options.cssName.volumeBarAudioOff : "true" == this.data.dataMute && (this.data.audioOffClass = "")
                                }
                            }
                        }]),
                            n
                    }(Qn);

                function Fr(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Hr, jr = function (e) {
                    c()(n, e);
                    var t = Fr(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "template", e.createTemplate(Mr || (Mr = Jn()(['\n  <gp-wait class="goldplay-tip goldplay__waiting-bar" title="', '" data-status="', '">\n    <span class="goldplay__waiting-bar--icon">\n    <svg width="60px" height="60px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" style="background: none;opacity:0.8">\n    <circle cx="50" cy="50" fill="none" stroke-linecap="round" r="40" stroke-width="8" stroke="#f6f6f6" stroke-dasharray="62.83185307179586 62.83185307179586" transform="rotate(17.8841 50 50)">\n    <animateTransform attributeName="transform" type="rotate" calcMode="linear" values="0 50 50;360 50 50" keyTimes="0;1" dur="0.7s" begin="0s" repeatCount="indefinite">\n    </animateTransform>\n    </circle>\n    </svg>\n  </span>\n  <gp-speed class="goldplay__waiting-bar--speed">', "</gp-speed>\n  </gp-wait>\n  "])), "title", "status", "speed")),
                            v()(u()(e), "data", {
                                title: "waiting",
                                speed: "",
                                status: "",
                                display: "show"
                            }),
                            v()(u()(e), "options", {}),
                            e.options = r,
                            Object.assign(e.data, r.data),
                            e.init(),
                            e
                    }

                    return o()(n, [{
                        key: "initProps",
                        value: function () {
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            var e = this;
                            this.events.on(de.LoaderUpdateSpeed, (function (t) {
                                    "show" === e.data.display && (e.data.speed = tr.formatBytes(t.speed) + " /s")
                                }
                            ))
                        }
                    }, {
                        key: "showWaiting",
                        value: function () {
                            var e = this.options.cssName
                                , t = this.options.$screenContainer;
                            t.querySelector("." + e.waitingBar) || t.prepend(this.element),
                                this.data.display = "show",
                                this.show(),
                                this.resetPosition()
                        }
                    }, {
                        key: "hideWaiting",
                        value: function () {
                            var e = this.options.cssName;
                            this.options.$screenContainer.querySelector("." + e.waitingBar) && (this.data.display = "hide",
                                this.data.speed = "Loading...",
                                this.hide())
                        }
                    }]),
                        n
                }(Qn);

                function zr(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Wr, Vr = function (e) {
                    c()(n, e);
                    var t = zr(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "template", e.createTemplate(Hr || (Hr = Jn()(['\n  <gp-alert class="goldplay-tip goldplay__alter-box" title="', '" data-display="', '">\n  <em title="close" class="goldplay__alter--close">\n    <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background:none;opacity:0.6" xml:space="preserve" width="20px" height="20px" viewBox="0 0 496.158 496.158">\n    <path style="fill:#ff3300;" d="M496.158,248.085c0-137.021-111.07-248.082-248.076-248.082C111.07,0.003,0,111.063,0,248.085\n    c0,137.002,111.07,248.07,248.082,248.07C385.088,496.155,496.158,385.087,496.158,248.085z"/>\n    <path style="fill:#FFFFFF;" d="M277.042,248.082l72.528-84.196c7.91-9.182,6.876-23.041-2.31-30.951\n    c-9.172-7.904-23.032-6.876-30.947,2.306l-68.236,79.212l-68.229-79.212c-7.91-9.188-21.771-10.216-30.954-2.306\n    c-9.186,7.91-10.214,21.77-2.304,30.951l72.522,84.196l-72.522,84.192c-7.91,9.182-6.882,23.041,2.304,30.951\n    c4.143,3.569,9.241,5.318,14.316,5.318c6.161,0,12.294-2.586,16.638-7.624l68.229-79.212l68.236,79.212\n    c4.338,5.041,10.47,7.624,16.637,7.624c5.069,0,10.168-1.749,14.311-5.318c9.186-7.91,10.22-21.77,2.31-30.951L277.042,248.082z"/>\n    </svg>\n  </em>\n  <span class="goldplay__alter--warn">\n    <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n    width="30" height="30" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">\n    <path style="fill:#495A79;" d="M501.461,383.799L320.501,51.401C306.7,28.6,282.7,14.8,256,14.8s-50.7,13.8-64.501,36.601\n      L10.539,383.799C-3.259,407.501-3.56,435.701,9.941,459.4c13.499,23.699,37.798,37.8,65.099,37.8h361.92\n      c27.301,0,51.601-14.101,65.099-37.8C515.56,435.701,515.259,407.501,501.461,383.799z"/>\n    <path style="fill:#42516D;" d="M502.059,459.4c-13.499,23.699-37.798,37.8-65.099,37.8H256V14.8c26.7,0,50.7,13.801,64.501,36.601\n      L501.461,383.8C515.259,407.501,515.56,435.701,502.059,459.4z"/>\n    <path style="fill:#FFDE33;" d="M475.661,399.1L294.699,66.699C286.601,52.9,271.901,44.8,256,44.8s-30.601,8.101-38.699,21.899\n      L36.339,399.1c-8.399,14.101-8.399,31.199-0.298,45.3c8.099,14.399,22.798,22.8,39,22.8h361.92c16.201,0,30.901-8.401,39-22.8\n      C484.06,430.299,484.06,413.201,475.661,399.1z"/>\n    <path style="fill:#FFBC33;" d="M475.96,444.4c-8.099,14.399-22.798,22.8-39,22.8H256V44.8c15.901,0,30.601,8.101,38.699,21.899\n      L475.661,399.1C484.06,413.201,484.06,430.299,475.96,444.4z"/>\n    <g>\n      <path style="fill:#495A79;" d="M256,437.2c-16.538,0-30-13.462-30-30s13.462-30,30-30s30,13.462,30,30S272.538,437.2,256,437.2z"/>\n      <path style="fill:#495A79;" d="M286,317.2c0,16.538-13.462,30-30,30s-30-13.462-30-30v-150c0-16.538,13.462-30,30-30\n        s30,13.462,30,30V317.2z"/>\n    </g>\n    <g>\n      <path style="fill:#42516D;" d="M286,407.2c0-16.538-13.462-30-30-30v60C272.538,437.2,286,423.738,286,407.2z"/>\n      <path style="fill:#42516D;" d="M286,317.2v-150c0-16.538-13.462-30-30-30v210C272.538,347.2,286,333.738,286,317.2z"/>\n    </g>\n    </svg>\n  </span>\n  <gp-content class="goldplay__alter--content">', "</gp-content>\n  </gp-alert>\n  "])), "title", "display", "content|trim")),
                            v()(u()(e), "data", {
                                title: "alert",
                                display: "default",
                                content: ""
                            }),
                            v()(u()(e), "options", {}),
                            e.options = r,
                            Object.assign(e.data, r.data),
                            e.init(),
                            e
                    }

                    return o()(n, [{
                        key: "bindEvent",
                        value: function () {
                            var e = this
                                , t = this.options.$screenContainer
                                , n = this.options.cssName;
                            yr(t).on("click", "." + n.alertClose, (function () {
                                    e.hide()
                                }
                            ))
                        }
                    }, {
                        key: "afterWatch",
                        value: function () {
                            "show" === this.data.display && this.resetPosition()
                        }
                    }, {
                        key: "showBox",
                        value: function () {
                            var e = this.options.cssName
                                , t = this.options.$screenContainer;
                            t.querySelector("." + e.alertBox) || t.prepend(this.element),
                                this.data.display = "show",
                                this.show()
                        }
                    }, {
                        key: "hideBox",
                        value: function () {
                            var e = this.options.cssName;
                            this.options.$screenContainer.querySelector("." + e.alertBox) && (this.data.display = "hide",
                                this.hide())
                        }
                    }, {
                        key: "show",
                        value: function () {
                            this.element.style.opacity = 1,
                                this.element.style.display = "inline-block",
                                this.resetPosition()
                        }
                    }, {
                        key: "hide",
                        value: function () {
                            this.element.style.opacity = 0,
                                this.element.style.display = "none"
                        }
                    }]),
                        n
                }(Qn);

                function Xr(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Yr, Gr = function (e) {
                    c()(n, e);
                    var t = Xr(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "template", e.createTemplate(Wr || (Wr = Jn()(['\n  <gp-time class="goldplay__control--timer">\n  <span gid="time" class="goldplay__control--timer-play">', '</span>\n  <span gid="slash">', '</span>\n  <span gid="total-time" class="goldplay__control--timer-total">', "</span>\n  </gp-time>\n  "])), "time", "slash", "totalTime")),
                            v()(u()(e), "data", {
                                time: "00:00",
                                totalTime: "",
                                slash: "/"
                            }),
                            v()(u()(e), "options", {}),
                            e.options = r,
                            Object.assign(e.data, r.data),
                            e.init(),
                            e
                    }

                    return o()(n, [{
                        key: "setTotalTime",
                        value: function (e) {
                            var t = e.sourceData;
                            this.data.totalTime = er.formatHHMMSS(t.duration)
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            var e = this;
                            this.events.on(de.LoaderPlayListLoaded, (function (t) {
                                    e.setTotalTime(t.loadData)
                                }
                            ))
                        }
                    }, {
                        key: "updateTime",
                        value: function (e) {
                            this.element.querySelector('[gid="time"]').innerHTML = e
                        }
                    }, {
                        key: "updateTotalTime",
                        value: function (e) {
                            this.element.querySelector('[gid="total-time"]').innerHTML = e
                        }
                    }]),
                        n
                }(Qn);

                function $r(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                function Kr(e, t) {
                    var n;
                    if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                        if (Array.isArray(e) || (n = function (e, t) {
                            if (!e)
                                return;
                            if ("string" == typeof e)
                                return qr(e, t);
                            var n = Object.prototype.toString.call(e).slice(8, -1);
                            "Object" === n && e.constructor && (n = e.constructor.name);
                            if ("Map" === n || "Set" === n)
                                return Array.from(e);
                            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                                return qr(e, t)
                        }(e)) || t && e && "number" == typeof e.length) {
                            n && (e = n);
                            var r = 0
                                , i = function () {
                            };
                            return {
                                s: i,
                                n: function () {
                                    return r >= e.length ? {
                                        done: !0
                                    } : {
                                        done: !1,
                                        value: e[r++]
                                    }
                                },
                                e: function (e) {
                                    throw e
                                },
                                f: i
                            }
                        }
                        throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                    }
                    var a, o = !0, s = !1;
                    return {
                        s: function () {
                            n = e[Symbol.iterator]()
                        },
                        n: function () {
                            var e = n.next();
                            return o = e.done,
                                e
                        },
                        e: function (e) {
                            s = !0,
                                a = e
                        },
                        f: function () {
                            try {
                                o || null == n.return || n.return()
                            } finally {
                                if (s)
                                    throw a
                            }
                        }
                    }
                }

                function qr(e, t) {
                    (null == t || t > e.length) && (t = e.length);
                    for (var n = 0, r = new Array(t); n < t; n++)
                        r[n] = e[n];
                    return r
                }

                var Qr, Zr = function (e) {
                    c()(n, e);
                    var t = $r(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "template", e.createTemplate(Yr || (Yr = Jn()(['\n  <gp-speed class="goldplay__speed-bar" title="', '">\n  <gp-overbox class="goldplay-hoverbox goldplay__speed-bar--box">\n  ', '\n  </gp-overbox>\n  <gp-button class="goldplay__speed-bar--link">\n  ', "\n  </gp-button>\n  </gp-speed>\n  "])), "title", "speedListHTML|html", "currentSpeedName")),
                            v()(u()(e), "data", {
                                title: "speed",
                                currentSpeed: 1,
                                speedList: null,
                                currentSpeedName: "倍速",
                                speedListHTML: ""
                            }),
                            v()(u()(e), "options", {}),
                            e.options = r,
                            e.speedList = e.options.player.options.speedList || U.c.speedList,
                            e.updateSpeedListHTML(),
                            Object.assign(e.data, r.data),
                            e.init(),
                            e.initProps(),
                            e.showHideBar(),
                            e
                    }

                    return o()(n, [{
                        key: "initProps",
                        value: function () {
                            var e = this.options.cssName;
                            this.$barBox = this.element.querySelector("." + e.speedBarBox)
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            var e = this
                                , t = this.options.cssName
                                , n = this.options.$controlBarContainer;
                            yr(n).on("mouseover", "." + t.speedBar, (function () {
                                    clearTimeout(r),
                                        e.showBarBoxHandle()
                                }
                            ));
                            var r;
                            yr(n).on("mouseout", "." + t.speedBar, (function (t) {
                                    r = setTimeout((function () {
                                            !function (t) {
                                                var n = e.element
                                                    , r = {
                                                    y: e.$barBox.offsetTop,
                                                    x: n.offsetLeft
                                                };
                                                return r.width = n.offsetWidth,
                                                    r.height = e.$barBox.offsetHeight,
                                                t.pageX > r.x && t.pageX < r.x + r.width && t.pageY > r.y && t.pageY < r.y + r.height
                                            }(t) ? e.hideBarBoxHandle() : clearTimeout(r)
                                        }
                                    ), U.c.hideBarBoxTime)
                                }
                            )),
                                yr(this.element).on("click", "[gp-node-li]", (function (t) {
                                        var n = t.target
                                            , r = parseFloat(n.getAttribute("value"), 10);
                                        if (r !== e.data.currentSpeed) {
                                            e.data.currentSpeed = r;
                                            var i = e.speedList.filter((function (e) {
                                                    return e.value === r
                                                }
                                            ));
                                            e.events.emit(de.PlayerSpeedTo, i[0]),
                                                e.updateSpeedListHTML()
                                        }
                                    }
                                ))
                        }
                    }, {
                        key: "showHideBar",
                        value: function () {
                            this.speedList.length <= 0 && this.hide()
                        }
                    }, {
                        key: "resetBoxPosition",
                        value: function () {
                            var e = 33 + 28 * this.speedList.length
                                , t = (this.$barBox.offsetWidth - this.element.offsetWidth) / 2;
                            this.$barBox.style.marginTop = -e + "px",
                                this.$barBox.style.marginLeft = -t + "px"
                        }
                    }, {
                        key: "hideBarBoxHandle",
                        value: function () {
                            this.$barBox.style.visibility = "hidden"
                        }
                    }, {
                        key: "showBarBoxHandle",
                        value: function () {
                            this.$barBox.style.visibility = "visible"
                        }
                    }, {
                        key: "updateSpeedListHTML",
                        value: function (e) {
                            var t = this.speedList;
                            if (!(t.length <= 0)) {
                                void 0 === e && (e = this.data.currentSpeed);
                                var n, r = t.slice(0, t.length).reverse(), i = Kr(r);
                                try {
                                    for (i.s(); !(n = i.n()).done;) {
                                        var a = n.value;
                                        a.value === e ? a.selected = !0 : delete a.selected
                                    }
                                } catch (e) {
                                    i.e(e)
                                } finally {
                                    i.f()
                                }
                                return this.data.speedListHTML = function (e) {
                                    if (e) {
                                        var t, n = ["<ul>"], r = Kr(e);
                                        try {
                                            for (r.s(); !(t = r.n()).done;) {
                                                var i = t.value
                                                    , a = ""
                                                    , o = "";
                                                i.selected && (a = "gp-selected",
                                                    o = " selected=".concat(i.selected)),
                                                    n.push('\n    <li class="'.concat(a, '" gp-node-li value="').concat(i.value, '" ').concat(o, ">").concat(i.name, "</li>\n    "))
                                            }
                                        } catch (e) {
                                            r.e(e)
                                        } finally {
                                            r.f()
                                        }
                                        return n.push("</ul>"),
                                            n.join("")
                                    }
                                }(r)
                            }
                        }
                    }]),
                        n
                }(Qn);

                function Jr(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var ei, ti = function (e) {
                    c()(n, e);
                    var t = Jr(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "template", e.createTemplate(Qr || (Qr = Jn()(['\n  <gp-subtitle class="goldplay__subtitle">\n  </gp-subtitle>\n  '])))),
                            v()(u()(e), "options", {}),
                            e.options = r,
                            Object.assign(e.data, r.data),
                            e.init(),
                            e
                    }

                    return n
                }(Qn);

                function ni(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                function ri(e, t) {
                    var n;
                    if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                        if (Array.isArray(e) || (n = function (e, t) {
                            if (!e)
                                return;
                            if ("string" == typeof e)
                                return ii(e, t);
                            var n = Object.prototype.toString.call(e).slice(8, -1);
                            "Object" === n && e.constructor && (n = e.constructor.name);
                            if ("Map" === n || "Set" === n)
                                return Array.from(e);
                            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                                return ii(e, t)
                        }(e)) || t && e && "number" == typeof e.length) {
                            n && (e = n);
                            var r = 0
                                , i = function () {
                            };
                            return {
                                s: i,
                                n: function () {
                                    return r >= e.length ? {
                                        done: !0
                                    } : {
                                        done: !1,
                                        value: e[r++]
                                    }
                                },
                                e: function (e) {
                                    throw e
                                },
                                f: i
                            }
                        }
                        throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                    }
                    var a, o = !0, s = !1;
                    return {
                        s: function () {
                            n = e[Symbol.iterator]()
                        },
                        n: function () {
                            var e = n.next();
                            return o = e.done,
                                e
                        },
                        e: function (e) {
                            s = !0,
                                a = e
                        },
                        f: function () {
                            try {
                                o || null == n.return || n.return()
                            } finally {
                                if (s)
                                    throw a
                            }
                        }
                    }
                }

                function ii(e, t) {
                    (null == t || t > e.length) && (t = e.length);
                    for (var n = 0, r = new Array(t); n < t; n++)
                        r[n] = e[n];
                    return r
                }

                var ai, oi = function (e) {
                    c()(n, e);
                    var t = ni(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "rateList", []),
                            v()(u()(e), "defaultRate", {
                                value: "600",
                                name: "高清"
                            }),
                            v()(u()(e), "template", e.createTemplate(ei || (ei = Jn()(['\n  <gp-rate class="goldplay__rate-bar" title="', '">\n  <gp-overbox class="goldplay-hoverbox goldplay__rate-bar--box">\n  ', '\n  </gp-overbox>\n  <gp-button class="goldplay__rate-bar--link">\n  ', "\n  </gp-button>\n  </gp-rate>\n  "])), "title", "rateListHTML|html", "currentRateName")),
                            v()(u()(e), "data", {
                                title: "stream rate",
                                currentRate: "600",
                                currentRateName: "高清",
                                rateListHTML: ""
                            }),
                            v()(u()(e), "options", {}),
                            e.options = r,
                            Object.assign(e.data, r.data),
                            e.rateList = e.options.player.options.rateList || e.rateList,
                            e.defaultRate = e.options.player.options.defaultRate || e.defaultRate,
                            e.setDefaultRate(),
                            e.updateRateListHTML(),
                            e.init(),
                            e.initProps(),
                            e.showHideBar(),
                            e
                    }

                    return o()(n, [{
                        key: "initProps",
                        value: function () {
                            var e = this.options.cssName;
                            this.$barBox = this.element.querySelector("." + e.rateBarBox)
                        }
                    }, {
                        key: "setDefaultRate",
                        value: function () {
                            var e = this;
                            if (!(this.rateList.length <= 0)) {
                                var t = this.rateList.find((function (t) {
                                        return String(t.value) === String(e.defaultRate.value)
                                    }
                                ));
                                t ? (this.data.currentRateName = t.name,
                                    this.data.currentRate = t.value) : (this.data.currentRateName = this.rateList[0].name,
                                    this.data.currentRate = this.rateList[0].value)
                            }
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            var e = this
                                , t = this.options.cssName
                                , n = this.options.$controlBarContainer;
                            yr(n).on("mouseover", "." + t.rateBar, (function () {
                                    clearTimeout(r),
                                        e.showBarBoxHandle()
                                }
                            ));
                            var r;
                            yr(n).on("mouseout", "." + t.rateBar, (function (t) {
                                    r = setTimeout((function () {
                                            !function (t) {
                                                var n = e.element
                                                    , r = {
                                                    y: e.$barBox.offsetTop,
                                                    x: n.offsetLeft
                                                };
                                                return r.width = n.offsetWidth,
                                                    r.height = e.$barBox.offsetHeight,
                                                t.pageX > r.x && t.pageX < r.x + r.width && t.pageY > r.y && t.pageY < r.y + r.height
                                            }(t) ? e.hideBarBoxHandle() : clearTimeout(r)
                                        }
                                    ), U.c.hideBarBoxTime)
                                }
                            )),
                                yr(this.element).on("click", "[gp-node-li]", (function (t) {
                                        var n = t.target.getAttribute("value");
                                        if (n !== e.data.currentRate) {
                                            e.data.currentRate = n;
                                            var r = e.rateList.filter((function (e) {
                                                    return e.value === n
                                                }
                                            ));
                                            e.events.emit(de.PlayerChangeRate, r[0]),
                                                e.data.currentRateName = r[0].name,
                                                e.updateRateListHTML(),
                                                e.hideBarBoxHandle()
                                        }
                                    }
                                ))
                        }
                    }, {
                        key: "showHideBar",
                        value: function () {
                            var e = this.rateList;
                            e && e.length <= 0 && this.hide()
                        }
                    }, {
                        key: "resetBoxPosition",
                        value: function () {
                            var e = 33 + 28 * this.rateList.length
                                , t = (this.$barBox.offsetWidth - this.element.offsetWidth) / 2;
                            this.$barBox.style.marginTop = -e + "px",
                                this.$barBox.style.marginLeft = -t + "px"
                        }
                    }, {
                        key: "hideBarBoxHandle",
                        value: function () {
                            this.$barBox.style.visibility = "hidden"
                        }
                    }, {
                        key: "showBarBoxHandle",
                        value: function () {
                            this.$barBox.style.visibility = "visible"
                        }
                    }, {
                        key: "updateRateListHTML",
                        value: function (e) {
                            var t = this.rateList;
                            if (!(t.length <= 0)) {
                                void 0 === e && (e = this.data.currentRate);
                                var n, r = t.slice(0, t.length).reverse(), i = ri(r);
                                try {
                                    for (i.s(); !(n = i.n()).done;) {
                                        var a = n.value;
                                        a.value === e ? a.selected = !0 : delete a.selected
                                    }
                                } catch (e) {
                                    i.e(e)
                                } finally {
                                    i.f()
                                }
                                return this.data.rateListHTML = function (e) {
                                    if (e) {
                                        var t, n = ["<ul>"], r = ri(e);
                                        try {
                                            for (r.s(); !(t = r.n()).done;) {
                                                var i = t.value
                                                    , a = ""
                                                    , o = "";
                                                i.selected && (a = "gp-selected",
                                                    o = " selected=".concat(i.selected)),
                                                    n.push('\n    <li class="'.concat(a, '" gp-node-li value="').concat(i.value, '" ').concat(o, ">").concat(i.name, "</li>\n    "))
                                            }
                                        } catch (e) {
                                            r.e(e)
                                        } finally {
                                            r.f()
                                        }
                                        return n.push("</ul>"),
                                            n.join("")
                                    }
                                }(r)
                            }
                        }
                    }]),
                        n
                }(Qn);

                function si(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var ui, li, ci, hi = function (e) {
                    c()(n, e);
                    var t = si(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "template", e.createTemplate(ai || (ai = Jn()(['\n  <gp-setting class="goldplay__setting-bar">\n  </gp-setting>\n  '])))),
                            v()(u()(e), "options", {}),
                            e.options = r,
                            Object.assign(e.data, r.data),
                            e.init(),
                            e
                    }

                    return n
                }(Qn);

                function fi(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var di,
                    pi = Mn.create(ui || (ui = Jn()(['\n<svg xmlns="http://www.w3.org/2000/svg" style="display:', '" width="20" height="20" viewBox="0 0 24 24">\n  <path d="M2.5 4h19a.5.5 0 0 1 .5.5v15a.5.5 0 0 1-.5.5h-19a.5.5 0 0 1-.5-.5v-15a.5.5 0 0 1 .5-.5zM5 7v10h14V7H5z" fill="#f1f1f1"></path>\n</svg>\n'])), "fullpageHide"),
                    yi = Mn.create(li || (li = Jn()(['\n<svg xmlns="http://www.w3.org/2000/svg" style="display:', '" width="20" height="20" viewBox="0 0 24 24">\n<path d="M3.5 6h17a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-.5.5h-17a.5.5 0 0 1-.5-.5v-11a.5.5 0 0 1 .5-.5zM6 9v6h12V9H6z" fill="#f1f1f1"></path>\n</svg>\n'])), "fullpageExitHide"),
                    vi = function (e) {
                        c()(n, e);
                        var t = fi(n);

                        function n() {
                            var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                            return i()(this, n),
                                e = t.call(this, r),
                                v()(u()(e), "containerOriginStyle", ""),
                                v()(u()(e), "template", e.createTemplate(ci || (ci = Jn()(['\n  <gp-button class="goldplay__control--fullpage" title="', '" data-status="', '">\n  ', "\n  </gp-button>\n  "])), "title", "status", "icon|html")),
                                v()(u()(e), "data", {
                                    fullpageHide: "",
                                    fullpageExitHide: "none",
                                    status: "",
                                    icon: pi,
                                    title: "fullpage"
                                }),
                                v()(u()(e), "options", {}),
                                e.options = r,
                                Object.assign(e.data, r.data),
                                e.init(),
                                e
                        }

                        return o()(n, [{
                            key: "watch",
                            value: function () {
                                "fullpage" === this.data.status ? (this.data.fullpageHide = "none",
                                    this.data.fullpageExitHide = "inline-block",
                                    this.data.title = "exit fullspage",
                                    this.data.icon = yi) : (this.data.fullpageHide = "inline-block",
                                    this.data.fullpageExitHide = "none",
                                    this.data.title = "fullpage",
                                    this.data.icon = pi)
                            }
                        }, {
                            key: "initProps",
                            value: function () {
                                var e = this.options;
                                this.$container = this.options.$container,
                                    this.$screenContainer = e.$screenContainer,
                                    this.$controlBarContainer = this.getComponent("controlBarContainer").element,
                                    this.originWidth = e.$container.offsetWidth,
                                    this.originHeight = e.$container.offsetHeight,
                                    this.containerOriginStyle = e.$container.getAttribute("style"),
                                    this.screenContainerOrginStyle = this.$screenContainer.getAttribute("style"),
                                    this.controlContainerOrginWidth = this.$controlBarContainer.style.width
                            }
                        }, {
                            key: "bindEvent",
                            value: function () {
                                var e = this
                                    , t = this.options.cssName
                                    , n = document
                                    , r = window;
                                yr(this.$controlBarContainer).on("click", "." + t.fullPage, (function () {
                                        var t = e.data.status;
                                        "fullscreen" === e.getComponent("fullScreen").data.status && ee.exitFullscreen(),
                                            "fullpage" === t ? e.exitFullPage() : e.fullPage()
                                    }
                                )),
                                    this.eventsList.esckeyup = this.addEventListener(n, "keyup", (function (t) {
                                            27 === t.keyCode && "fullpage" === e.data.status && e.exitFullPage()
                                        }
                                    )),
                                    this.eventsList.windowresize = this.addEventListener(r, "resize", (function () {
                                            if ("fullpage" === e.data.status) {
                                                var t = ee.getInnerWidthHeight();
                                                e.resizeTo(t.width, t.height),
                                                    e.resetPosition()
                                            }
                                        }
                                    ))
                            }
                        }, {
                            key: "fullPage",
                            value: function () {
                                this.data.status = "fullpage";
                                var e = this.options
                                    , t = this.options.cssName
                                    , n = ee.getInnerWidthHeight();
                                this.saveOriginPosition(),
                                    e.$container.classList.add(t.containerFullPage),
                                    this.resizeTo(n.width, n.height),
                                    this.resetPosition(),
                                    scrollTo(0, 0)
                            }
                        }, {
                            key: "saveOriginPosition",
                            value: function () {
                                var e = this.getComponent("progressBar");
                                this.posterOriginStyle = this.getComponent("poster").element.getAttribute("style"),
                                    this.originScroll = {
                                        scrollX: scrollX,
                                        scrollY: scrollY
                                    },
                                    this.progressBarOriginLeft = e.progressBarLeft,
                                    this.progressBarOriginWidth = e.progressBarWidth,
                                    this.progressBarPlayWidthRate = e.getProgressPlayLeftWidth().offsetWidth / this.progressBarOriginWidth,
                                    this.progressBarLoadWidthRate = e.getProgressLoadLeftWidth().offsetWidth / this.progressBarOriginWidth,
                                    this.progressBarLoadLeftRate = (e.getProgressLoadLeftWidth().offsetLeft - this.progressBarOriginLeft) / this.progressBarOriginWidth
                            }
                        }, {
                            key: "setProgressBarPosition",
                            value: function () {
                                var e = this.getComponent("progressBar")
                                    , t = e.progressBarWidth
                                    , n = e.progressBarLeft
                                    , r = t * this.progressBarPlayWidthRate
                                    , i = t * this.progressBarLoadWidthRate
                                    , a = t * this.progressBarLoadLeftRate;
                                e.setProgressPosition(r),
                                    e.setProgressLoadLeftWidth(a + n, i),
                                    this.getComponent("progressBar").clearDragDotTop()
                            }
                        }, {
                            key: "resizeTo",
                            value: function (e, t) {
                                var n = this.options
                                    , r = n.player
                                    , i = r.controlBarAutoHide ? t : t - r.controlBarHeight;
                                r.$screenContainer.style.width = e + "px",
                                    r.$screenContainer.style.height = i + "px",
                                    n.$container.style.width = e + "px",
                                    n.$container.style.height = t + "px"
                            }
                        }, {
                            key: "resetPosition",
                            value: function () {
                                var e = this.options;
                                this.setProgressBarPosition(),
                                    e.player.resizeScreen();
                                var t = this.getComponent("bigPlayButton");
                                t && t.resetPosition(),
                                    this.getComponent("poster").resetPosition(),
                                    this.getComponent("waitingBar").resetPosition(),
                                    this.getComponent("controlBarContainer").resetPosition()
                            }
                        }, {
                            key: "exitFullPage",
                            value: function () {
                                this.data.status = "exitfullpage";
                                var e = this.options.cssName;
                                this.saveOriginPosition(),
                                    this.$container.classList.remove(e.containerFullPage),
                                    this.resetScreen()
                            }
                        }, {
                            key: "resetScreen",
                            value: function () {
                                this.$container.setAttribute("style", this.containerOriginStyle),
                                    this.$screenContainer.setAttribute("style", this.screenContainerOrginStyle),
                                    this.$controlBarContainer.style.width = this.controlContainerOrginWidth,
                                    this.getComponent("poster").element.setAttribute("style", this.posterOriginStyle),
                                    scrollTo(this.originScroll.scrollX, this.originScroll.scrollY),
                                    this.resetPosition()
                            }
                        }]),
                            n
                    }(Qn);

                function gi(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var mi,
                    bi = '\n<svg xmlns="http://www.w3.org/2000/svg" gid="fullscreen" style="display:${\'fullscreenHide\'}" width="20" height="20" viewBox="0 0 24 24">\n<path d="M15 5.057V2h6.5a.5.5 0 0 1 .5.5V9h-2.943V5.057H15zm-6 0H5.057V9H2V2.5a.5.5 0 0 1 .5-.5H9v3.057zM15 22v-2.943h4.057V15H22v6.5a.5.5 0 0 1-.5.5H15zm-6 0H2.5a.5.5 0 0 1-.5-.5V15h3.057v4.057H9V22z" fill="#f1f1f1"></path>\n</svg>\n',
                    ki = function (e) {
                        c()(n, e);
                        var t = gi(n);

                        function n() {
                            var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                            return i()(this, n),
                                e = t.call(this, r),
                                v()(u()(e), "template", e.createTemplate(di || (di = Jn()(['\n  <gp-button class="goldplay__control--fullscreen" title="', '" data-status="', '">\n  ', "\n  </gp-button>\n  "])), "title", "status", "icon|html")),
                                v()(u()(e), "data", {
                                    fullscreenHide: "inline-block",
                                    fullscreenExitHide: "none",
                                    status: "",
                                    icon: bi,
                                    title: "fullscreen"
                                }),
                                v()(u()(e), "options", {}),
                                e.options = r,
                                Object.assign(e.data, r.data),
                                e.init(),
                                e
                        }

                        return o()(n, [{
                            key: "watch",
                            value: function () {
                                "fullscreen" === this.data.status ? (this.data.fullscreenHide = "none",
                                    this.data.fullscreenExitHide = "inline-block",
                                    this.data.title = "exit fullscreen",
                                    this.data.icon = '\n<svg xmlns="http://www.w3.org/2000/svg" gid="fullscreenExit" style="display:${\'fullscreenExitHide\'}"  width="20" height="20" viewBox="0 0 24 24">\n<path d="M22 5.943V9h-6.5a.5.5 0 0 1-.5-.5V2h2.943v3.943H22zm-20 0h3.943V2H9v6.5a.5.5 0 0 1-.5.5H2V5.943zM22 15v2.943h-4.057V22H15v-6.5a.5.5 0 0 1 .5-.5H22zM2 15h6.5a.5.5 0 0 1 .5.5V22H5.943v-4.057H2V15z" fill="#f1f1f1"></path>\n</svg>\n') : (this.data.fullscreenHide = "inline-block",
                                    this.data.fullscreenExitHide = "none",
                                    this.data.title = "fullscreen",
                                    this.data.icon = bi)
                            }
                        }, {
                            key: "initProps",
                            value: function () {
                                this.getComponent("fullPage").initProps.call(this)
                            }
                        }, {
                            key: "bindEvent",
                            value: function () {
                                var e = this
                                    , t = this.options.$container
                                    , n = this.options.cssName
                                    , r = document
                                    , i = window;
                                this.eventsList.fullscreenchange = this.addEventListener(r, "fullscreenchange", (function () {
                                        if (document.fullscreenElement || document.webkitFullscreenElement)
                                            e.fullScreen();
                                        else {
                                            var r = e.getComponent("fullPage");
                                            "fullpage" === r.data.status ? (t.classList.remove(n.containerFullScreen),
                                                e.data.status = "exitfullscreen",
                                                r.fullPage()) : e.exitFullScreen()
                                        }
                                    }
                                )),
                                    this.eventsList.windowresize = this.addEventListener(i, "resize", (function () {
                                            document.fullscreenElement && (e.resizeTo(screen.width, screen.height - (window.outerHeight - window.innerHeight)),
                                                e.resetPosition())
                                        }
                                    )),
                                    yr(this.$controlBarContainer).on("click", "." + n.fullScreen, (function () {
                                            var t = e.data.status;
                                            e.saveOriginPosition(),
                                                "fullscreen" === t ? ee.exitFullscreen() : ee.Fullscreen(e.options.$container)
                                        }
                                    ))
                            }
                        }, {
                            key: "fullScreen",
                            value: function () {
                                this.data.status = "fullscreen";
                                var e = this.options
                                    , t = this.options.cssName
                                    , n = {
                                    width: screen.width,
                                    height: screen.height - (outerHeight - innerHeight)
                                };
                                ee.isSafari() && (n.height = n.height + 38),
                                    e.$container.classList.add(t.containerFullScreen),
                                    this.resizeTo(n.width, n.height),
                                    this.resetPosition(),
                                    scrollTo(0, 0)
                            }
                        }, {
                            key: "saveOriginPosition",
                            value: function () {
                                this.getComponent("fullPage").saveOriginPosition.call(this)
                            }
                        }, {
                            key: "resizeTo",
                            value: function (e, t) {
                                this.getComponent("fullPage").resizeTo.call(this, e, t)
                            }
                        }, {
                            key: "resetPosition",
                            value: function () {
                                this.getComponent("fullPage").resetPosition.call(this)
                            }
                        }, {
                            key: "setProgressBarPosition",
                            value: function () {
                                this.getComponent("fullPage").setProgressBarPosition.call(this)
                            }
                        }, {
                            key: "exitFullScreen",
                            value: function () {
                                this.data.status = "exitfullscreen";
                                var e = this.options.cssName;
                                this.saveOriginPosition(),
                                    this.options.$container.classList.remove(e.containerFullScreen),
                                    this.resetScreen(),
                                    this.saveOriginPosition()
                            }
                        }, {
                            key: "resetScreen",
                            value: function () {
                                this.getComponent("fullPage").resetScreen.call(this)
                            }
                        }]),
                            n
                    }(Qn);
                Mn.create(mi || (mi = Jn()(['<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\nwidth="', '" height="', '" viewBox="0 0 438.533 438.533" style="', '" xml:space="preserve">\n<g>\n<path d="M409.133,109.203c-19.608-33.592-46.205-60.189-79.798-79.796C295.736,9.801,259.058,0,219.273,0\n c-39.781,0-76.466,9.801-110.063,29.407c-33.595,19.604-60.192,46.201-79.8,79.796C9.801,142.8,0,179.489,0,219.267\n s9.804,76.463,29.407,110.062c19.607,33.585,46.204,60.189,79.799,79.798c33.597,19.605,70.283,29.407,110.063,29.407\n s76.47-9.802,110.065-29.407c33.593-19.602,60.189-46.206,79.795-79.798c19.603-33.599,29.403-70.287,29.403-110.062\n C438.533,179.489,428.732,142.795,409.133,109.203z M328.904,234.966L173.588,326.33c-2.856,1.711-5.902,2.567-9.136,2.567\n c-3.045,0-6.09-0.764-9.135-2.286c-6.09-3.614-9.136-8.939-9.136-15.985V127.907c0-7.041,3.046-12.371,9.136-15.987\n c6.28-3.427,12.369-3.333,18.271,0.284l155.316,91.36c6.088,3.424,9.134,8.663,9.134,15.703\n C338.038,226.308,334.992,231.537,328.904,234.966z" fill="', '">\n</g>\n</svg>\n'])), "width", "height", "iconStyle", "fillColor");

                function xi(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Pi = function (e) {
                    c()(n, e);
                    var t = xi(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            (e = t.call(this, r)).options = Object.assign(e.options, r),
                            e.componentsController = e.options.componentsController,
                            e.init(),
                            e
                    }

                    return o()(n, [{
                        key: "render",
                        value: function () {
                            var e = this
                                , t = R.createEl("gp-button-block");
                            t.classList.add("goldplay__control--button-block"),
                                n.componentList.forEach((function (n) {
                                        var r = e.componentsController.getComponent(n);
                                        t.appendChild(r.element)
                                    }
                                )),
                                this.element = t
                        }
                    }], [{
                        key: "addCustomControl",
                        value: function (e) {
                            n.componentList.push(e)
                        }
                    }]),
                        n
                }(Qn);
                v()(Pi, "componentList", ["playButton", "pauseButton", "replayButton"]);
                var wi = Pi;

                function _i(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Bi = function (e) {
                    c()(n, e);
                    var t = _i(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            (e = t.call(this, r)).options = Object.assign(e.options, r),
                            e.componentsController = e.options.componentsController,
                            e.init(),
                            e
                    }

                    return o()(n, [{
                        key: "render",
                        value: function () {
                            var e = this
                                , t = R.createEl("gp-control-sidebar");
                            t.classList.add("goldplay__control--sidebar"),
                                n.componentList.forEach((function (n) {
                                        var r = e.componentsController.getComponent(n);
                                        t.appendChild(r.element)
                                    }
                                )),
                                this.element = t
                        }
                    }], [{
                        key: "addCustomControl",
                        value: function (e, t) {
                            (t < 0 || t > n.componentList.length) && (t = n.componentList.length),
                                n.componentList.splice(t, 0, e)
                        }
                    }]),
                        n
                }(Qn);
                v()(Bi, "componentList", ["speedBar", "rateBar", "volumeBar", "fullPage", "fullScreen"]);
                var Ti = Bi;

                function Ei(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Si = function (e) {
                    c()(n, e);
                    var t = Ei(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            (e = t.call(this, r)).options = Object.assign(e.options, r),
                            e.componentsController = e.options.componentsController,
                            e.init(),
                            e
                    }

                    return o()(n, [{
                        key: "render",
                        value: function () {
                            var e = this
                                , t = R.createEl("gp-control-nearside");
                            t.classList.add("goldplay__control--button-block"),
                                n.componentList.forEach((function (n) {
                                        var r = e.componentsController.getComponent(n);
                                        t.appendChild(r.element)
                                    }
                                )),
                                this.element = t
                        }
                    }], [{
                        key: "addCustomControl",
                        value: function (e, t) {
                            (t < 0 || t > n.componentList.length) && (t = n.componentList.length),
                                n.componentList.splice(t, 0, e)
                        }
                    }]),
                        n
                }(Qn);
                v()(Si, "componentList", ["playControl", "timer"]);
                var Ci = Si
                    , Ri = {
                    BaseComponent: Qn,
                    controlBarContainer: sr,
                    poster: ar,
                    progressBar: kr,
                    playButton: _r,
                    pauseButton: Sr,
                    replayButton: Dr,
                    volumeBar: Ur,
                    waitingBar: jr,
                    alertBox: Vr,
                    timer: Gr,
                    speedBar: Zr,
                    subtitle: ti,
                    rateBar: oi,
                    settingBar: hi,
                    fullPage: vi,
                    fullScreen: ki,
                    playControl: wi,
                    sideControlBar: Ti,
                    nearControlBar: Ci
                };

                function Li(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Ai = En
                    , Di = function (e) {
                    return e.substr(0, 1).toUpperCase() + e.substr(1)
                }
                    , Oi = function (e) {
                    c()(n, e);
                    var t = Li(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "allComponents", {}),
                            v()(u()(e), "controlBarController", null),
                            v()(u()(e), "options", {
                                cssName: Ai
                            }),
                            e.options = Object.assign(e.options, r),
                            e.options.componentsController = u()(e),
                            e.initComponents(),
                            e.$container = e.options.$container,
                            e.$screenContainer = e.options.$screenContainer,
                            e.$canvas = e.options.$canvas,
                            e.$audioContainer = e.options.$audioContainer,
                            e.$audio = e.options.$audio,
                            e.options.$controlBarContainer = e.controlBarContainer.element,
                            e.bindEvent(),
                            e
                    }

                    return o()(n, [{
                        key: "run",
                        value: function () {
                            for (var e in this.controlBarController.run(),
                                Ri)
                                this[e] && "function" == typeof this[e].registerMethod && this[e].registerMethod()
                        }
                    }, {
                        key: "initComponents",
                        value: function () {
                            for (var e in Ri) {
                                var t = Ri[e];
                                this.allComponents[e] || this.createComponent(t, e)
                            }
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            var e = this;
                            this.events.on(de.PlayerLoadedMetaData, (function () {
                                    e.poster.hide()
                                }
                            )),
                                this.events.on(de.AudioPlayerPlayFail, (function () {
                                        e.drawBigPlayButton(),
                                            e.getComponent("poster").hide(),
                                            e.events.emit(de.PlayerOnPause, e),
                                            e.events.emit(de.ControlBarPause, e)
                                    }
                                )),
                                this.bindAlertBoxEvent(),
                                this.bindWaitingBarEvent()
                        }
                    }, {
                        key: "bindWaitingBarEvent",
                        value: function () {
                            this.waitingBar.initProps(),
                                this.waitingBar.bindEvent()
                        }
                    }, {
                        key: "drawBigPlayButton",
                        value: function () {
                            this.bigPlayButton && (this.$screenContainer.prepend(this.bigPlayButton.element),
                                this.bigPlayButton.show(),
                                this.bigPlayButton.bindEvent(),
                                this.bigPlayButton.resetPosition())
                        }
                    }, {
                        key: "setControlBarController",
                        value: function (e) {
                            this.controlBarController = e
                        }
                    }, {
                        key: "getControlBarController",
                        value: function () {
                            return this.controlBarController || this.options.player.controlBarContainer
                        }
                    }, {
                        key: "bindAlertBoxEvent",
                        value: function () {
                            this.alertBox.initProps(),
                                this.alertBox.bindEvent()
                        }
                    }, {
                        key: "drawPoster",
                        value: function () {
                            this.$screenContainer.prepend(this.poster.element),
                                this.poster.data.display = "show",
                                this.poster.bindEvent(),
                                this.poster.resetPosition()
                        }
                    }, {
                        key: "createComponent",
                        value: function (e, t) {
                            var n = Di(t);
                            this["set" + n](new e(this.options)),
                                this[t] = this["get" + n](),
                            this.allComponents[t] || (this.allComponents[t] = this[t])
                        }
                    }, {
                        key: "getComponent",
                        value: function (e) {
                            return this.allComponents[e] || Ri[e] && this.createComponent(Ri[e], e),
                                this.allComponents[e]
                        }
                    }, {
                        key: "resetAllComponents",
                        value: function () {
                            var e = this
                                , t = Object.getOwnPropertyNames(this)
                                , n = {};
                            t.forEach((function (t) {
                                    Ri[t] && (n[t] = e[t])
                                }
                            )),
                                this.allComponents = n
                        }
                    }, {
                        key: "getAllComponents",
                        value: function () {
                            return this.allComponents
                        }
                    }]),
                        n
                }(D);
                for (var Mi in Oi.addComponet = function (e) {
                    var t = Di(e);
                    Oi.prototype["set" + t] = function (t) {
                        this[e] = t
                    }
                        ,
                        Oi.prototype["get" + t] = function () {
                            return this[e]
                        }
                }
                    ,
                    Ri)
                    Oi.addComponet(Mi);
                var Ii = Oi;

                function Ni(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Ui = En
                    , Fi = function (e) {
                    c()(n, e);
                    var t = Ni(n);

                    function n() {
                        var e, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        return i()(this, n),
                            e = t.call(this, r),
                            v()(u()(e), "player", null),
                            v()(u()(e), "loadData", null),
                            v()(u()(e), "options", {
                                cssName: Ui
                            }),
                            e.options = Object.assign(e.options, r),
                            e.player = e.options.player,
                            e.loadData = e.player.loadData,
                            e.componentsController = e.player.componentsController,
                            e.$screenContainer = e.player.$screenContainer,
                            e.initComponents(),
                            e
                    }

                    return o()(n, [{
                        key: "initComponents",
                        value: function () {
                            var e = this.componentsController;
                            Object.assign(this, e.getAllComponents()),
                                this.container = this.controlBarContainer
                        }
                    }, {
                        key: "run",
                        value: function () {
                            this.timer.setTotalTime(this.loadData),
                                this.drawLayout(),
                                this.bindEvent(),
                                this.player.autoPlay ? this.events.emit(de.ControlBarPlay) : this.events.emit(de.ControlBarPause)
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            this.bindContainerEvent(),
                                this.bindTimerEvent(),
                                this.bindPlayEvent(),
                                this.bindProgressEvent(),
                                this.bindSpeedEvent(),
                                this.bindRateEvent(),
                                this.bindVolumeEvent(),
                                this.bindFullPage(),
                                this.bindFullScreen()
                        }
                    }, {
                        key: "bindContainerEvent",
                        value: function () {
                            this.container.initProps(),
                                this.container.bindEvent()
                        }
                    }, {
                        key: "bindTimerEvent",
                        value: function () {
                            this.timer.initProps(),
                                this.timer.bindEvent()
                        }
                    }, {
                        key: "bindSpeedEvent",
                        value: function () {
                            this.speedBar.bindEvent(),
                                this.speedBar.resetBoxPosition()
                        }
                    }, {
                        key: "bindRateEvent",
                        value: function () {
                            this.rateBar.bindEvent(),
                                this.rateBar.resetBoxPosition()
                        }
                    }, {
                        key: "bindFullPage",
                        value: function () {
                            this.fullPage.initProps(),
                                this.fullPage.bindEvent()
                        }
                    }, {
                        key: "bindFullScreen",
                        value: function () {
                            this.fullScreen.initProps(),
                                this.fullScreen.bindEvent()
                        }
                    }, {
                        key: "bindPlayEvent",
                        value: function () {
                            var e = this;
                            this.events.on(de.ControlBarPlay, (function () {
                                    "pause" !== e.pauseButton.data.status && (e.pauseButton.data.status = "pause"),
                                        e.replayButton.hide(),
                                        e.playButton.hide(),
                                        e.pauseButton.show(),
                                    e.bigPlayButton && e.bigPlayButton.hide()
                                }
                            )),
                                this.events.on(de.ControlBarPause, (function () {
                                        "pause" !== e.player.status && (e.pauseButton.data.status = "pause"),
                                            e.playButton.show(),
                                            e.pauseButton.hide()
                                    }
                                )),
                                this.events.on(de.PlayerEnd, (function () {
                                        e.replayButton.show(),
                                            e.pauseButton.hide(),
                                            e.playButton.hide()
                                    }
                                )),
                                [de.PlayerWait, de.PlayerSeeking, de.PlayerReset, de.PlayerChangeRate, de.PlayerChangeSrc].forEach((function (t) {
                                        e.events.on(t, (function () {
                                                e.waitingBar.showWaiting()
                                            }
                                        ))
                                    }
                                )),
                                this.events.on(de.PlayerSeekEnd, (function () {
                                        e.waitingBar.hideWaiting()
                                    }
                                )),
                                this.events.on(de.PlayerPlay, (function () {
                                        e.waitingBar.hideWaiting(),
                                            e.events.emit(de.ControlBarPlay, e)
                                    }
                                )),
                                this.events.on(de.PlayerPause, (function () {
                                        e.events.emit(de.ControlBarPause, e)
                                    }
                                )),
                                this.events.on(de.PlayerPlaying, (function () {
                                        e.waitingBar.hideWaiting()
                                    }
                                )),
                                this.events.on(de.PlayerOnSeek, (function (t) {
                                        t < 1e3 * e.loadData.sourceData.duration && e.events.emit(de.ControlBarPauseLoading)
                                    }
                                )),
                                this.events.on(de.ControlBarPauseLoading, (function () {
                                        "pauseloading" !== e.pauseButton.data.status && (e.pauseButton.data.status = "pauseloading"),
                                            e.replayButton.hide(),
                                            e.playButton.hide(),
                                            e.pauseButton.show()
                                    }
                                )),
                                yr(this.options.$container).on("click", "." + Ui.playButton, (function () {
                                        "play" !== e.player.status && e.events.emit(de.PlayerOnPlay, e)
                                    }
                                )),
                                yr(this.options.$container).on("click", "." + Ui.pauseButton, (function () {
                                        "pause" !== e.player.status && e.events.emit(de.PlayerOnPause, e)
                                    }
                                )),
                                yr(this.options.$container).on("click", "." + Ui.replayButton, (function () {
                                        e.events.emit(de.PlayerOnSeek, e.player.startTime)
                                    }
                                ))
                        }
                    }, {
                        key: "bindProgressEvent",
                        value: function () {
                            this.progressBar.initProps(),
                                this.progressBar.bindEvent()
                        }
                    }, {
                        key: "bindVolumeEvent",
                        value: function () {
                            this.volumeBar.initProps(),
                                this.volumeBar.initVolumeSize(),
                                this.volumeBar.bindEvent()
                        }
                    }, {
                        key: "drawLayout",
                        value: function () {
                            var e = this.options.$container
                                , t = this.container.element;
                            e.append(t)
                        }
                    }, {
                        key: "destroy",
                        value: function () {
                            this.removeEventListenerGlobal(),
                                this.container.destroy()
                        }
                    }, {
                        key: "removeEventListenerGlobal",
                        value: function () {
                            this.progressBar.progressDragEvent && this.progressBar.progressDragEvent.removeEventListenerAll(),
                            this.volumeBar.volumeDragEvent && this.volumeBar.volumeDragEvent.removeEventListenerAll(),
                                this.fullPage.removeEventListenerAll(),
                                this.fullScreen.removeEventListenerAll()
                        }
                    }]),
                        n
                }(D)
                    , Hi = n(44)
                    , ji = n.n(Hi);

                function zi(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Wi = function (e) {
                    c()(n, e);
                    var t = zi(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this, e),
                            v()(u()(r), "isLast", !1),
                            r.type = e.type,
                            r.libPath = e.libPath,
                            r.player = e.player,
                            r.ary = [],
                            r.textInited = !1,
                            r.init(),
                            r
                    }

                    return o()(n, [{
                        key: "init",
                        value: function () {
                            "ts" == this.type && this.initNornalWorker(),
                                this.bindEvent(),
                                this.loadjs()
                        }
                    }, {
                        key: "initNornalWorker",
                        value: function () {
                            this.processor = this.initWorker()
                        }
                    }, {
                        key: "initWorker",
                        value: function () {
                            var e = this
                                , t = ji()(132);
                            return t.onmessage = function (t) {
                                var n = t.data
                                    , r = n.type
                                    , i = n.data;
                                switch (r) {
                                    case "dataProcessorReady":
                                        e.onDataProcessorReady();
                                        break;
                                    case "decoded":
                                        e.onDecoded(i);
                                        break;
                                    case "demuxedAAC":
                                        e.onDemuxedAAC(i);
                                        break;
                                    case "partEnd":
                                        e.onPartEnd(i);
                                        break;
                                    case "resetEnd":
                                        e.onResetEnd();
                                        break;
                                    case "maxPTS":
                                        e.onMaxPTS(i);
                                        break;
                                    case "flushEnd":
                                        e.onFlushEnd(i);
                                        break;
                                    case "demuxedFPSNumber":
                                        e.onDemuxedFPSNumber(i)
                                }
                            }
                                ,
                                t
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            var e = this;
                            this.events.on(de.DemuxStartDemux, this.onStartDemux.bind(this)),
                                this.events.on(de.DemuxNextDemux, this.onNextDemux.bind(this)),
                                this.events.on(de.DemuxLast, (function () {
                                        e.isLast = !0
                                    }
                                )),
                                this.events.on(de.DecodeFlush, (function () {
                                        e.flush()
                                    }
                                ))
                        }
                    }, {
                        key: "flush",
                        value: function () {
                            this.processor.postMessage({
                                type: "flush"
                            })
                        }
                    }, {
                        key: "setColorAry",
                        value: function (e) {
                            if (this.player.options.playsafe) {
                                var t = Math.ceil(e / 480 * 16);
                                t = Math.max(Math.min(36, t), 16);
                                var n = function (e) {
                                    var t, n, r, i;
                                    for ("abcdofghijklnmepqrstuvwxyz0123456789",
                                             "lpmkenjibhuvgycftxdrzsoawq0126783459",
                                             e = e.substr(1),
                                             t = "",
                                             n = 0; n < e.length; n++)
                                        r = e.charAt(n),
                                            t += -1 == (i = "lpmkenjibhuvgycftxdrzsoawq0126783459".indexOf(r)) ? r : "abcdofghijklnmepqrstuvwxyz0123456789".charAt(i);
                                    return t
                                }(this.player.options.playsafe.split("-").pop());
                                this.ary = function (e) {
                                    var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 40
                                        , n = document.createElement("canvas");
                                    n.width = 300,
                                        n.height = 80,
                                        n.setAttribute("style", "position:absolute;top:0;left:0;pointer-events: none;opacity:1;"),
                                        document.getElementsByTagName("body")[0].appendChild(n);
                                    var r = n.getContext("2d");
                                    r.fillStyle = "#111",
                                        r.font = "".concat(t, "px sans-serif"),
                                        r.fillText(e, 0, 40, 300);
                                    for (var i = Math.min(Math.ceil(r.measureText(e).width), 300), a = r.getImageData(0, 0, n.width, n.height), o = a.data, s = o.length / 4, u = [], l = 0, c = 0; c < s; c++) {
                                        if (!(c % 300) && c) {
                                            if (void 0 !== u[0]) {
                                                if (-1 === u[u.length - 1])
                                                    break;
                                                u.push(-1)
                                            }
                                            l++
                                        }
                                        var h = 4 * c
                                            , f = o[h];
                                        f && u.push(c - 300 * l)
                                    }
                                    return u.unshift(i),
                                        document.getElementsByTagName("body")[0].removeChild(n),
                                        u
                                }(n, t)
                            }
                        }
                    }, {
                        key: "loadPx",
                        value: function () {
                            this.textInited = !0,
                                this.processor.postMessage({
                                    type: "loadPx",
                                    data: this.ary
                                })
                        }
                    }, {
                        key: "loadjs",
                        value: function () {
                            this.processor.postMessage({
                                type: "loadwasm",
                                libPath: this.libPath
                            }),
                            this.textInited && this.loadPx()
                        }
                    }, {
                        key: "postStartTime",
                        value: function (e) {
                            this.processor.postMessage({
                                type: "startTime",
                                time: e
                            })
                        }
                    }, {
                        key: "postKey",
                        value: function () {
                            var e = this.player.dataController.loadData.sourceData.keyAttrs;
                            e && this.processor.postMessage({
                                type: "keyAndIV",
                                key: e.key,
                                iv: e.decryptiv,
                                tk: this.player.options.playsafe,
                                mh: 2 * this.player.options.minSeekHole
                            })
                        }
                    }, {
                        key: "reset",
                        value: function () {
                            !0 === this.player.changing && (this.textInited = !1,
                                this.ary = []),
                                this.isLast = !1,
                                this.processor.terminate(),
                                this.initNornalWorker(),
                                this.postStartTime(this.player.currentTime),
                                this.loadjs()
                        }
                    }, {
                        key: "onFlushEnd",
                        value: function (e) {
                            this.events.emit(de.DecodeFlushEnd, e)
                        }
                    }, {
                        key: "onMaxPTS",
                        value: function (e) {
                            this.events.emit(de.PlayerMaxPTS, e.maxAudioPTS, e.maxVideoPTS)
                        }
                    }, {
                        key: "onDemuxedAAC",
                        value: function (e) {
                            this.events.emit(de.DemuxAAC, e)
                        }
                    }, {
                        key: "onDataProcessorReady",
                        value: function () {
                            this.player.seeking || this.player.reseting ? this.events.emit(de.ProcessorResetEnd) : this.events.emit(de.DataProcessorReady)
                        }
                    }, {
                        key: "onStartDemux",
                        value: function (e) {
                            this.postKey(),
                            this.player.reseting || (this.logger.info("onStartDemux", "postMessage to demux"),
                                e && e.arrayBuffer ? this.processor.postMessage({
                                    type: "startDemux",
                                    data: e.arrayBuffer,
                                    isLast: this.isLast,
                                    no: this.options.player.options.pdx ? e.no : -1,
                                    currentTime: this.player.seeking ? this.player.currentTime : 0
                                }, [e.arrayBuffer.buffer]) : this.logger.error("onStartDemux", "data is null", "data:", e))
                        }
                    }, {
                        key: "onNextDemux",
                        value: function (e) {
                            this.processor.postMessage({
                                type: "nextDemux",
                                poolLength: e
                            }, [])
                        }
                    }, {
                        key: "onDecoded",
                        value: function (e) {
                            this.player.reseting || (this.textInited || e[0] && (this.setColorAry(e[0].width),
                                this.loadPx()),
                                this.events.emit(de.DecodeDecoded, e))
                        }
                    }, {
                        key: "onPartEnd",
                        value: function (e) {
                            this.events.emit(de.DecodeApppendEnd, e)
                        }
                    }, {
                        key: "onResetEnd",
                        value: function () {
                            this.events.emit(de.ProcessorResetEnd)
                        }
                    }, {
                        key: "onDemuxedFPSNumber",
                        value: function (e) {
                            this.events.emit(de.ProcessorDemuxedFPSNumber, e)
                        }
                    }, {
                        key: "destroy",
                        value: function () {
                            this.processor && this.processor.terminate()
                        }
                    }]),
                        n
                }(N);

                function Vi(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Xi = function (e) {
                    c()(n, e);
                    var t = Vi(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this, e),
                            v()(u()(r), "currentIndex", null),
                            v()(u()(r), "retryTime", 0),
                            v()(u()(r), "dataReady", {
                                audioReady: !1,
                                imageReady: !1
                            }),
                            v()(u()(r), "hasInit", !1),
                            v()(u()(r), "loadDataStatus", "loading"),
                            v()(u()(r), "duration", 0),
                            v()(u()(r), "tsNumber", 0),
                            v()(u()(r), "cachePoolLength", 0),
                            r.loadData = e.loadData,
                            r.imagePlayer = e.imagePlayer,
                            r.audioPlayer = e.audioPlayer,
                            r.player = e.player,
                            r.bindEvent(),
                            r
                    }

                    return o()(n, [{
                        key: "bindEvent",
                        value: function () {
                            var e = this;
                            this.events.on(de.LoadDataRead, (function (t) {
                                    e.onRead(t)
                                }
                            )),
                                this.events.on(de.DemuxVideo, (function (t, n) {
                                        e.onVideoDemuxed(t, n)
                                    }
                                )),
                                this.events.on(de.DemuxAAC, (function (t) {
                                        e.onAACDemuxed(t)
                                    }
                                )),
                                this.events.on(de.DecodeDecoded, (function (t) {
                                        e.onDecoded(t)
                                    }
                                )),
                                this.events.on(de.DecodeApppendEnd, (function (t) {
                                        e.onAppendEnd(t)
                                    }
                                )),
                                this.events.on(de.ImagePlayerReady, (function () {
                                        e.logger.info("bindevent", "Events.ImagePlayerReady"),
                                            e.checkDataReady("imageReady")
                                    }
                                )),
                                this.events.on(de.AudioPlayerDataReady, (function () {
                                        e.logger.info("bindevent", "Events.AudioPlayerDataReady"),
                                            e.player.receiveAACTime = null,
                                            e.checkDataReady("audioReady")
                                    }
                                )),
                                this.events.on(de.AudioPlayerWait, (function () {
                                        e.dataReady.audioReady = !1,
                                            e.events.emit(de.PlayerWait, "audioPlayer"),
                                        e.cachePoolLength <= 20 && e.decodeNext(e.player.cacheFrames)
                                    }
                                )),
                                this.events.on(de.ImagePlayerWait, (function () {
                                        e.dataReady.imageReady = !1,
                                            e.events.emit(de.PlayerWait, "imagePlayer"),
                                        e.cachePoolLength <= 20 && e.decodeNext(e.player.cacheFrames)
                                    }
                                )),
                                this.events.on(de.ImagePlayerEnd, (function () {
                                        e.logger.info("bindevent", "........imageplayer end"),
                                            e.events.emit(de.PlayerEnd)
                                    }
                                )),
                                this.events.on(de.PlayerWait, (function () {
                                        e.logger.warn("player status wait"),
                                            e.player.status = "wait",
                                        "loadend" === e.loadDataStatus && (e.loadDataStatus = "loading",
                                            e.loadNext())
                                    }
                                )),
                                this.events.on(de.PlayerLoadNext, (function (t) {
                                        "loadend" === e.loadDataStatus ? (e.loadDataStatus = "loading",
                                            e.loadNext()) : t > 0 && e.cachePoolLength <= 20 && e.decodeNext(t)
                                    }
                                )),
                                this.events.on(de.ProcessorDemuxedFPSNumber, (function (t) {
                                        t.clear && (e.cachePoolLength = 0),
                                            e.cachePoolLength = e.cachePoolLength + t.length
                                    }
                                )),
                                this.events.on(de.DecodeFlushEnd, (function (t) {
                                        e.logger.info("flushend>>>>>>>>>>>>>>>", t),
                                            e.imagePlayer.maxPTS = t
                                    }
                                ))
                        }
                    }, {
                        key: "checkDataReady",
                        value: function (e) {
                            var t = this.dataReady;
                            t[e] = !0;
                            for (var n = Object.keys(t), r = 0, i = 0; i < n.length && t[n[i]]; i++)
                                r++;
                            r == n.length && this.events.emit(de.StreamDataReady, e)
                        }
                    }, {
                        key: "setBaseInfo",
                        value: function (e) {
                            this.duration = e.duration,
                                this.tsNumber = e.tsNumber
                        }
                    }, {
                        key: "reset",
                        value: function () {
                            this.dataReady = {
                                audioReady: !1,
                                imageReady: !1
                            },
                                this.currentIndex = null,
                                this.loadDataStatus = "loading"
                        }
                    }, {
                        key: "startLoad",
                        value: function (e) {
                            this.logger.info("startLoad", "index:", e),
                                this.currentIndex = e,
                                this.player.currentIndex = e,
                                this.events.emit(de.LoadDataReadBufferByNo, e)
                        }
                    }, {
                        key: "loadNext",
                        value: function () {
                            this.player.reseting || (this.currentIndex >= this.tsNumber ? this.logger.info("loadNext", "load end", "currentIndex", this.currentIndex, "tsNumber:", this.tsNumber) : (this.currentIndex += 1,
                                this.player.currentIndex = this.currentIndex,
                                this.logger.info("loadNext", "load next ts", "tsno:", this.currentIndex),
                                this.events.emit(de.LoadDataReadBufferByNo, this.currentIndex)))
                        }
                    }, {
                        key: "onDecoded",
                        value: function (e) {
                            var t = this;
                            this.cachePoolLength = Math.max(0, this.cachePoolLength - e.length),
                                e.forEach((function (e) {
                                        t.player.reseting || e.pts >= t.player.currentTime && t.imagePlayer.push(e)
                                    }
                                )),
                            this.player.changing && this.cachePoolLength < 10 && this.imagePlayer.imageData.pool.length < 10 && this.decodeNext(this.player.maxCacheFrames)
                        }
                    }, {
                        key: "onAppendEnd",
                        value: function (e) {
                            return e ? (this.logger.info("onAppendEnd", "events.decodeFlush", e),
                                void this.events.emit(de.DecodeFlush)) : (this.logger.info("onAppendEnd", "start load next ts condition", this.checkBuffer(), this.currentIndex),
                                this.checkBuffer() && null !== this.currentIndex ? (this.logger.info("onAppendEnd", "load next ts. currentIndex:", this.currentIndex),
                                    void this.loadNext()) : (this.loadDataStatus = "loadend",
                                    void this.logger.info("onAppendEnd", "load ts stop")))
                        }
                    }, {
                        key: "onAACDemuxed",
                        value: function (e) {
                            var t = this;
                            this.player.reseting || (e.length || this.audioPlayer.send({}),
                                e.forEach((function (e) {
                                        (e.PTS >= t.player.currentTime || e.audioEnd) && (!t.player.receiveAACTime && t.player.seeking && (t.player.receiveAACTime = Date.now()),
                                            t.audioPlayer.send(e))
                                    }
                                )))
                        }
                    }, {
                        key: "onVideoDemuxed",
                        value: function (e) {
                            this.player.reseting || this.events.emit(de.DecodeStartDecode, e)
                        }
                    }, {
                        key: "checkBuffer",
                        value: function () {
                            var e = this.player
                                , t = e.currentTime;
                            return !((e.buffer()[1] || 0) - t >= e.maxBufferLength)
                        }
                    }, {
                        key: "decodeNext",
                        value: function (e) {
                            this.events.emit(de.DemuxNextDemux, e)
                        }
                    }, {
                        key: "onRead",
                        value: function (e) {
                            this.player.reseting ? console.warn("onRead reseting") : e && e.arrayBuffer && e.no === this.currentIndex ? (this.retryTime = 0,
                                this.logger.warn("onRead", "get stream data"),
                            e.no === this.tsNumber && (this.logger.info("onRead", "the last ts"),
                                this.events.emit(de.DemuxLast)),
                                this.events.emit(de.DemuxStartDemux, e)) : this.logger.error("onRead", "load ts failred", "tsno:", this.currentIndex)
                        }
                    }]),
                        n
                }(N);

                function Yi(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Gi = function (e) {
                    c()(n, e);
                    var t = Yi(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this, e),
                            v()(u()(r), "maxBufferLength", 0),
                            v()(u()(r), "maxCacheFrames", 30),
                            v()(u()(r), "duration", 0),
                            v()(u()(r), "pool", []),
                            v()(u()(r), "start", 0),
                            v()(u()(r), "end", 0),
                            v()(u()(r), "offset", 0),
                            v()(u()(r), "fps", 25),
                            v()(u()(r), "getCacheFrames", (function () {
                                    return this.maxCacheFrames
                                }
                            )),
                            r.maxBufferLength = e.maxBufferLength / 2,
                            r.maxCacheFrames = e.maxCacheFrames,
                            r.getCacheFrames = e.getCacheFrames,
                            r
                    }

                    return o()(n, [{
                        key: "poolLength",
                        get: function () {
                            return this.pool.length
                        }
                    }, {
                        key: "push",
                        value: function (e) {
                            var t = this.pool
                                , n = t.length;
                            0 === n && (this.offset = e.pts,
                                this.start = e.pts,
                                this.fps = e.fps);
                            var r = this.insertSort(t, e);
                            t[r - 1] && (t[r - 1].duration = t[r].pts - t[r - 1].pts),
                            t[r + 1] && (t[r].duration = t[r + 1].pts - t[r].pts),
                                this.end = this.pool[n].pts + this.pool[n].duration,
                                this.duration = this.end - this.start
                        }
                    }, {
                        key: "insertSort",
                        value: function (e, t) {
                            var n = e.length;
                            if (0 === n)
                                return e.push(t),
                                    0;
                            for (var r = 0; r < n; r++)
                                if (t.pts < e[r].pts) {
                                    for (var i = n; i > r;)
                                        e[i] = e[i - 1],
                                            i--;
                                    return e[r] = t,
                                        r
                                }
                            return e.push(t),
                            e.length - 1
                        }
                    }, {
                        key: "reset",
                        value: function () {
                            this.duration = 0,
                                this.pool.splice(0, this.pool.length),
                                this.start = 0,
                                this.end = 0,
                                this.offset = 0
                        }
                    }, {
                        key: "findByIndex",
                        value: function (e) {
                            var t = this.buffer.length;
                            return e < t ? (this.currentIndex = e,
                                this.buffer[e]) : (this.logger.error("input index ".concat(e, "is not found, current maxIndex is ").concat(t - 1)),
                                null)
                        }
                    }, {
                        key: "find",
                        value: function (e) {
                            var t = this.pool
                                , n = t.length;
                            if (this.isBuffered(e) && 0 !== n) {
                                var r = this.findIndex(e);
                                if (-1 !== r) {
                                    var i = t[r];
                                    return this.checkBuffer(e),
                                        i
                                }
                            }
                        }
                    }, {
                        key: "findIndex",
                        value: function (e) {
                            return this.pool.findIndex((function (t) {
                                    var n = t.pts;
                                    return e >= n && e < n + t.duration
                                }
                            ))
                        }
                    }, {
                        key: "isBuffered",
                        value: function (e) {
                            return e >= this.start && e < this.end
                        }
                    }, {
                        key: "checkBuffer",
                        value: function (e) {
                            this.duration,
                                this.maxBufferLength;
                            var t = this.pool.length
                                , n = this.getCacheFrames();
                            if (t >= n / 2) {
                                if (e > this.start) {
                                    var r = this.findIndex(e)
                                        , i = this.pool.splice(0, r);
                                    i.forEach((function (e) {
                                            null
                                        }
                                    )),
                                        i = null,
                                        this.start = this.pool[0].pts,
                                        this.duration = this.end - this.start
                                }
                                return !1
                            }
                            return this.events.emit(de.PlayerLoadNext, n),
                                !0
                        }
                    }, {
                        key: "buffer",
                        value: function () {
                            return {
                                start: this.start,
                                end: this.end
                            }
                        }
                    }]),
                        n
                }(N)
                    , $i = n(74)
                    , Ki = n.n($i)
                    , qi = n(60)
                    , Qi = n.n(qi);

                function Zi(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var Ji = function (e) {
                    c()(n, e);
                    var t = Zi(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this),
                            v()(u()(r), "canvas", null),
                            r.setCanvas(e.canvas),
                            r.setRender(),
                            r
                    }

                    return o()(n, [{
                        key: "setCanvas",
                        value: function (e) {
                            this.canvas = e
                        }
                    }, {
                        key: "setRender",
                        value: function (e) {
                            this.render = Ki.a.attach(e || this.canvas)
                        }
                    }, {
                        key: "clear",
                        value: function () {
                            this.render.clear()
                        }
                    }, {
                        key: "drawFrame",
                        value: function (e) {
                            var t, n, r, i, a, o = Date.now(), s = e.buf_y, u = e.buf_u, l = e.buf_v, c = e.width,
                                h = e.height, f = c / 2, d = h / 2;
                            t = {
                                bytes: s,
                                stride: e.stride_y
                            },
                                n = {
                                    bytes: u,
                                    stride: e.stride_u
                                },
                                r = {
                                    bytes: l,
                                    stride: e.stride_v
                                },
                                i = Qi.a.format({
                                    width: c,
                                    height: h,
                                    chromaWidth: f,
                                    chromaHeight: d
                                }),
                                a = Qi.a.frame(i, t, n, r),
                                this.render.drawFrame(a);
                            var p = Date.now();
                            p - o > 10 && this.logger.warn("drawFrame", "reandertime:", p - o)
                        }
                    }]),
                        n
                }(N);

                function ea(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var ta = function (e) {
                    c()(n, e);
                    var t = ea(n);

                    function n(e) {
                        var r;
                        return i()(this, n),
                            r = t.call(this, e),
                            v()(u()(r), "status", "pause"),
                            v()(u()(r), "_currentTime", 0),
                            v()(u()(r), "maxPTS", null),
                            v()(u()(r), "ready", !1),
                            v()(u()(r), "firstRender", !1),
                            r.imageData = new Gi({
                                events: e.events,
                                maxBufferLength: e.maxBufferLength,
                                maxCacheFrames: e.maxCacheFrames,
                                getCacheFrames: function () {
                                    return e.player.cacheFrames
                                }
                            }),
                            r.screen = new Ji({
                                canvas: e.canvas
                            }),
                            r.playHandler = null,
                            r.player = e.player,
                            r.debug = e.debug || !1,
                            r._initTime = null,
                            r
                    }

                    return o()(n, [{
                        key: "setScreenRender",
                        value: function (e) {
                            this.screen.setCanvas(e),
                                this.screen.setRender(e)
                        }
                    }, {
                        key: "clear",
                        value: function () {
                            this.screen.clear()
                        }
                    }, {
                        key: "play",
                        value: function (e) {
                            "play" !== this.status && (this.status = "play",
                                this.render(e))
                        }
                    }, {
                        key: "pause",
                        value: function () {
                            "pause" !== this.status && (this.status = "pause",
                                clearTimeout(this.playHandler),
                                this.playHandler = null)
                        }
                    }, {
                        key: "checkBuffer",
                        value: function () {
                            return this.imageData.checkBuffer(this.currentTime)
                        }
                    }, {
                        key: "push",
                        value: function (e) {
                            if (!this.player.reseting) {
                                this._initTime || (this._initTime = !0,
                                e.pts > 0 && this.events.emit(de.ImagePlayerInitTime, e.pts)),
                                    this.imageData.push(e);
                                this.end,
                                    this.player.currentTime;
                                this.imageData.poolLength >= 10 && !this.ready && (this.ready = !0,
                                    this.status = "ready",
                                    this.events.emit(de.ImagePlayerReady)),
                                    this.events.emit(de.ImagePlayerBuffeUpdate)
                            }
                        }
                    }, {
                        key: "find",
                        value: function (e) {
                            return this.imageData.find(e)
                        }
                    }, {
                        key: "buffer",
                        value: function () {
                            return this.imageData.buffer()
                        }
                    }, {
                        key: "isBuffered",
                        value: function (e) {
                            return this.imageData.isBuffered(e)
                        }
                    }, {
                        key: "render",
                        value: function (e) {
                            if (!(e < this.imageData.offset)) {
                                var t = this.find(e);
                                return t ? (this.firstRender || (this.firstRender = !0,
                                    this.events.emit(de.PlayerLoadedMetaData, t.width, t.height)),
                                    this.screen.drawFrame(t),
                                    this.currentTime = t.pts,
                                    this.events.emit(de.ImagePlayerRenderEnd, e, t.duration),
                                    t) : this.maxPTS && (e >= this.maxPTS + this.fragDuration || e > this.maxPTS && e >= this.imageData.end) ? (this.status = "end",
                                    void this.events.emit(de.ImagePlayerEnd, this.maxPTS)) : (this.logger.warn("Events.ImagePlayerWait", e, this.start, this.end, this.maxPTS),
                                    this.logger.warn("render", "not yuv data"),
                                    this.status = "wait",
                                    this.ready = !1,
                                    this.events.emit(de.ImagePlayerWait, "image", "this"),
                                    !1)
                            }
                        }
                    }, {
                        key: "reset",
                        value: function () {
                            this.status = "pause",
                                this.ready = !1,
                                this.imageData.reset(),
                                this.maxPTS = null,
                                this.currentTime = 0
                        }
                    }, {
                        key: "currentTime",
                        get: function () {
                            return this._currentTime
                        },
                        set: function (e) {
                            this._currentTime = e
                        }
                    }, {
                        key: "offset",
                        get: function () {
                            return this.imageData.offset
                        }
                    }, {
                        key: "fragDuration",
                        get: function () {
                            return Math.ceil(1e3 / this.imageData.fps)
                        }
                    }, {
                        key: "start",
                        get: function () {
                            return this.imageData.start
                        }
                    }, {
                        key: "end",
                        get: function () {
                            return this.imageData.end
                        }
                    }, {
                        key: "duration",
                        get: function () {
                            return this.imageData.duration
                        }
                    }]),
                        n
                }(N);

                function na(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var ra = new WeakMap
                    , ia = new WeakMap
                    , aa = new WeakMap
                    , oa = new WeakMap
                    , sa = new WeakMap
                    , ua = new WeakMap
                    , la = function (e) {
                    c()(n, e);
                    var t = na(n);

                    function n(e) {
                        var r, a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        return i()(this, n),
                            r = t.call(this),
                            v()(u()(r), "mode", U.c.mode),
                            v()(u()(r), "$container", null),
                            v()(u()(r), "componentsController", null),
                            v()(u()(r), "controlBarController", null),
                            v()(u()(r), "controlBarHeight", 50),
                            v()(u()(r), "hideControlBar", !1),
                            v()(u()(r), "alertError", null),
                            v()(u()(r), "dataController", null),
                            v()(u()(r), "demuxer", null),
                            v()(u()(r), "decoder", null),
                            v()(u()(r), "preload", !0),
                            v()(u()(r), "startTime", 0),
                            v()(u()(r), "screenWidth", null),
                            v()(u()(r), "screenHeight", null),
                            v()(u()(r), "options", {}),
                            ra.set(u()(r), {
                                writable: !0,
                                value: U.c.libPath
                            }),
                            v()(u()(r), "readyStatus", {
                                dataProcessor: !1,
                                firstData: !1,
                                audioPlayer: !1
                            }),
                            v()(u()(r), "reseting", !1),
                            ia.set(u()(r), {
                                writable: !0,
                                value: 0
                            }),
                            aa.set(u()(r), {
                                writable: !0,
                                value: !1
                            }),
                            oa.set(u()(r), {
                                writable: !0,
                                value: !1
                            }),
                            sa.set(u()(r), {
                                writable: !0,
                                value: 1
                            }),
                            ua.set(u()(r), {
                                writable: !0,
                                value: !1
                            }),
                            v()(u()(r), "maxBufferLength", U.d.MAXBUFFERLENGTH),
                            v()(u()(r), "maxCacheFrames", U.d.MAXCACHEFRAMES),
                            v()(u()(r), "seekSegmentNo", -1),
                            v()(u()(r), "status", "init"),
                            v()(u()(r), "loader", null),
                            v()(u()(r), "currentIndex", null),
                            v()(u()(r), "startIndex", 1),
                            v()(u()(r), "loadData", null),
                            v()(u()(r), "paused", !1),
                            v()(u()(r), "autoPlay", !0),
                            v()(u()(r), "duration", 0),
                            v()(u()(r), "tsNumber", 0),
                            v()(u()(r), "useScriptProcessor", !0),
                            v()(u()(r), "seekingAndPause", !1),
                            v()(u()(r), "pid", null),
                            v()(u()(r), "destroyed", !1),
                        e || r.logger.error("Please pass in a dom object as the display container"),
                            r.el = e,
                            Object.assign(r.options, a),
                            r.options.sourceURL = r.options.sourceURL || r.options.source,
                            r.options.streamList = r.options.streamList || [],
                            r.options.events = T(),
                            r.options.volume = void 0 !== a.volume ? a.volume : 1,
                            r.maxBufferLength = void 0 !== a.maxBufferLength ? a.maxBufferLength : r.maxBufferLength,
                            r.maxCacheFrames = void 0 !== a.maxCacheFrames ? a.maxCacheFrames : r.maxCacheFrames,
                            r.autoPlay = void 0 !== a.autoPlay ? a.autoPlay : r.autoPlay,
                            r.pid = ee.getPid(r.options.sourceURL),
                            r.controlBarAutoHide = void 0 !== a.controlBarAutoHide ? a.controlBarAutoHide : r.controlBarAutoHide,
                            r.useScriptProcessor = !1 !== a.useScriptProcessor,
                            k()(u()(r), ra, void 0 !== a.libPath ? a.libPath : m()(u()(r), ra)),
                            r.preload = void 0 === a.preload ? r.preload : a.preload,
                            r.startTime = void 0 === a.startTime ? r.startTime : a.startTime,
                            r.originStartTime = r.startTime,
                            r.playbackRate = void 0 === a.playbackRate ? r.playbackRate : a.playbackRate,
                            r
                    }

                    return o()(n, [{
                        key: "cacheFrames",
                        get: function () {
                            var e = Math.min(Math.max(this.playbackRate, 1), 2);
                            return Math.ceil(this.maxCacheFrames * e)
                        }
                    }, {
                        key: "setAlertError",
                        value: function () {
                            this.options.alertError = this.alertError = M.getInstance({
                                player: this,
                                component: this.componentsController.alertBox,
                                events: this.options.events
                            })
                        }
                    }, {
                        key: "setDataController",
                        value: function () {
                            this.dataController = gt.getInstance({
                                player: this,
                                events: this.options.events
                            })
                        }
                    }, {
                        key: "setLoadData",
                        value: function () {
                            this.dataController.setLoadData({
                                player: this,
                                events: this.options.events
                            }),
                                this.loadData = this.dataController.loadData
                        }
                    }, {
                        key: "setComponentsController",
                        value: function () {
                            this.componentsController = Ii.getInstance({
                                $container: this.$container,
                                $screenContainer: this.$screenContainer,
                                $canvas: this.$canvas,
                                $audioContainer: this.$audioContainer,
                                $audio: this.$audio,
                                loadData: this.loadData,
                                bigPlayButtonColor: this.bigPlayButtonColor,
                                player: this,
                                events: this.options.events
                            })
                        }
                    }, {
                        key: "setControlBarController",
                        value: function () {
                            var e = Object.assign({}, this.options, {
                                $container: this.$container,
                                $screenContainer: this.$screenContainer,
                                controlBarAutoHide: this.controlBarAutoHide,
                                player: this
                            });
                            this.controlBarController = Fi.getInstance(e)
                        }
                    }, {
                        key: "setLoadController",
                        value: function () {
                            this.loaderController = lt.getInstance(this.options.type, {
                                player: this,
                                events: this.options.events
                            })
                        }
                    }, {
                        key: "setProcessorController",
                        value: function () {
                            this.processController = new Wi({
                                type: "ts",
                                libPath: m()(this, ra),
                                events: this.options.events,
                                player: this
                            })
                        }
                    }, {
                        key: "setStreamController",
                        value: function () {
                            this.streamController = new Xi({
                                events: this.options.events,
                                loadData: this.loadData,
                                imagePlayer: this.imagePlayer,
                                audioPlayer: this.audioPlayer,
                                player: this
                            })
                        }
                    }, {
                        key: "setImagerPlayer",
                        value: function () {
                            this.imagePlayer = new ta({
                                events: this.options.events,
                                canvas: this.$canvas,
                                maxBufferLength: this.maxBufferLength,
                                maxCacheFrames: this.maxCacheFrames,
                                player: this
                            })
                        }
                    }, {
                        key: "setAudioPlayer",
                        value: function () {
                            this.audioPlayer = new Tn({
                                player: this,
                                events: this.options.events,
                                audioNode: this.$audio,
                                volume: this.options.volume,
                                audioContext: this.options.audioContext,
                                bufferSizeLevel: this.options.bufferSizeLevel,
                                useScriptProcessor: this.useScriptProcessor
                            })
                        }
                    }, {
                        key: "setAction",
                        value: function () {
                            this.action = new xt({
                                player: this,
                                screen: this.screen,
                                imagePlayer: this.imagePlayer,
                                loadData: this.loadData,
                                audioPlayer: this.audioPlayer,
                                events: this.options.events
                            })
                        }
                    }, {
                        key: "init",
                        value: function () {
                            this.hideControlBar = this.options.hideControlBar || this.hideControlBar,
                                this.controlBarHeight = this.options.controlBarHeight || this.controlBarHeight,
                            this.hideControlBar && (this.controlBarHeight = 0),
                                this.options.httpWorker = ji()(98, {
                                    name: "httpWorker"
                                }),
                                this.currentTime = this.startTime,
                                this.addEl(),
                                this.setDataController(),
                                this.setLoadData(),
                                this.setComponentsController(),
                                this.setLoadController(),
                            this.hideControlBar || (this.setControlBarController(),
                                this.componentsController.setControlBarController(this.controlBarController),
                                this.setAlertError()),
                                this.setProcessorController(),
                                this.setImagerPlayer(),
                                this.setAudioPlayer(),
                                this.setAction(),
                                this.setStreamController(),
                            this.preload && this.run(),
                                this.bindEvent()
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            var e = this;
                            this.events.on(de.PlayerOnPlay, (function () {
                                    e.play()
                                }
                            )),
                                this.events.on(de.PlayerOnPause, (function () {
                                        e.pause()
                                    }
                                )),
                                this.events.on(de.PlayerOnVolume, (function (t) {
                                        e.volume = t
                                    }
                                )),
                                this.events.on(de.DataProcessorReady, (function () {
                                        e.logger.info("bindEvent", "decoder ready"),
                                            e.checkReady("dataProcessor")
                                    }
                                )),
                                this.events.on(de.AudioPlayerReady, (function () {
                                        e.logger.info("bindEvent", "audioPlayer ready"),
                                        e.seeking || e.checkReady("audioPlayer")
                                    }
                                )),
                                this.events.on(de.PlayerReady, (function () {
                                        e.logger.info("bindEvent", "player ready"),
                                            e.onReady()
                                    }
                                )),
                                this.events.on(de.PlayerSpeedTo, (function (t) {
                                        e.changeSpeed(t)
                                    }
                                )),
                                this.events.on(de.PlayerChangeRate, (function (t) {
                                        e.changeRate(t)
                                    }
                                )),
                                this.events.on(de.PlayerWait, (function () {
                                        e.onWait()
                                    }
                                )),
                                this.events.on(de.PlayerPlay, (function () {
                                        e.onPlay()
                                    }
                                )),
                                this.events.on(de.LoaderPlayListLoaded, (function (t) {
                                        "function" == typeof e.options.afterLoadPlaylist && e.options.afterLoadPlaylist(e.laodData.sourceData);
                                        var n = t.loadData.sourceData;
                                        e.duration = n.duration,
                                            e.tsNumber = n.length,
                                            e.streamController.setBaseInfo({
                                                duration: e.duration,
                                                tsNumber: e.tsNumber
                                            }),
                                            e.dataController.startLoad(e.startTime),
                                            e.setStartTime(e.originStartTime)
                                    }
                                )),
                                this.events.on(de.LoadDataFirstLoaded, (function (t) {
                                        e.logger.info("bindEvent", "first data ready"),
                                            e.startIndex = t.no,
                                            e.streamController.currentIndex = t.no,
                                            e.checkReady("firstData")
                                    }
                                )),
                                this.events.on(de.StreamDataReady, (function () {
                                        e.logger.info("bindEvent", "dataReady"),
                                            setTimeout(e.onDataReady.bind(e), 0)
                                    }
                                )),
                                this.events.on(de.PlayerLoadedMetaData, (function (t, n) {
                                        e.setCanvas(),
                                            e.resizeScreen(t, n)
                                    }
                                )),
                                this.events.on(de.PlayerEnd, (function () {
                                        e.status = "end"
                                    }
                                )),
                                this.events.on(de.ImagePlayerBuffeUpdate, (function () {
                                        var t = e.buffer();
                                        e.events.emit(de.PlayerbufferUpdate, t)
                                    }
                                )),
                                this.events.on(de.PlayerOnSeek, (function (t) {
                                        e.seek(Math.floor(t))
                                    }
                                )),
                            this.alertError && this.events.on(de.PlayerAlert, (function (t) {
                                    e.alertError.show(t)
                                }
                            )),
                                this.events.on(de.PlayerThrowError, (function (t) {
                                        I.a.apply(e, t)
                                    }
                                ))
                        }
                    }, {
                        key: "reset",
                        value: function (e) {
                            this.action && this.action.reset(e)
                        }
                    }, {
                        key: "switchPlaylist",
                        value: function (e, t) {
                            this.loaderController.switchPlaylist(e, t)
                        }
                    }, {
                        key: "changeSpeed",
                        value: function () {
                            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                            this.playbackRate = e.value || 1,
                                this.events.emit(de.PlayerRatechange)
                        }
                    }, {
                        key: "setStartTime",
                        value: function (e) {
                            this.startTime = e
                        }
                    }, {
                        key: "changeRate",
                        value: function (e) {
                            this.pause(),
                                this.events.emit(de.ControlBarPauseLoading, this),
                                this.setStartTime((this.currentTime - 5e3) / 1e3),
                                this.changing = !0,
                                this.seeking = !1,
                                this.imagePlayer.firstRender = !1,
                                this.readyStatus = {
                                    dataProcessor: !1,
                                    firstData: !1,
                                    audioPlayer: !1
                                },
                                this.reset(!0),
                                this.switchPlaylist(e.url)
                        }
                    }, {
                        key: "changeSrc",
                        value: function (e, t) {
                            this.pause(),
                                this.events.emit(de.ControlBarPauseLoading, this),
                                this.events.emit(de.PlayerChangeSrc, this),
                                this.changing = !0,
                                this.seeking = !1,
                                this.imagePlayer.firstRender = !1,
                                this.readyStatus = {
                                    dataProcessor: !1,
                                    firstData: !1,
                                    audioPlayer: !1
                                },
                                this.currentTime = this.startTime,
                                this.imagePlayer.clear(),
                                this.reset(!0),
                                this.switchPlaylist(e, t)
                        }
                    }, {
                        key: "setCanvas",
                        value: function () {
                            var e = Ln.createCanvas(this);
                            if (R.isElement(this.$canvas)) {
                                if (this.$canvas.width && this.$canvas.height)
                                    return this.imagePlayer.setScreenRender(e),
                                        this.$canvas.replaceWith(e),
                                        void (this.$canvas = e)
                            } else
                                this.$screen.appendChild(e),
                                    this.$canvas = e
                        }
                    }, {
                        key: "destroy",
                        value: function () {
                            var e, t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                            return this.destroyed = !0,
                            this.controlBarController && (this.controlBarController.destroy(),
                                delete this.controlBarController),
                            this.$container && (this.el.removeChild(this.$container),
                                delete this.$container),
                            this.audioPlayer && (e = this.audioPlayer.clear(t)),
                            this.imagePlayer && this.imagePlayer.reset(),
                            this.loadData && this.loadData.reset(),
                                this.processController.destroy(),
                                this.loaderController.destroy(),
                                e
                        }
                    }, {
                        key: "run",
                        value: function () {
                            this.loaderController.run()
                        }
                    }, {
                        key: "checkReady",
                        value: function (e) {
                            var t = this.readyStatus;
                            if (e && "string" == typeof e) {
                                t[e] = !0;
                                for (var n = Object.keys(t), r = 0; r < n.length; r++)
                                    if (!t[n[r]])
                                        return !1;
                                return this.logger.info("checkReady", "player ready"),
                                    this.events.emit(de.PlayerReady),
                                    !0
                            }
                            return this.logger.error("checkReady", "check ready", "type is no correct, type:", e),
                                !1
                        }
                    }, {
                        key: "addEl",
                        value: function () {
                            var e, t, n, r;
                            this.el ? (e = Ln.createContainer(this),
                                this.el.appendChild(e),
                                this.$container = e,
                                t = Ln.createScreenContainer(this),
                                this.$screen = t,
                                e.appendChild(t),
                                this.$screenContainer = t,
                                this.setCanvas(),
                                r = Ln.createAudio(this),
                                this.$audio = r,
                                (n = Ln.createAudioContainer(this)).appendChild(r),
                                this.$audioContainer = n,
                                e.appendChild(n)) : this.logger.error("addEl", "not found el.", "el:", this.options.el)
                        }
                    }, {
                        key: "onWait",
                        value: function () {
                            this.logger.info("onWait", "wait,wait,wait")
                        }
                    }, {
                        key: "onPlay",
                        value: function () {
                            this.logger.info("onPlay", "play, play, play")
                        }
                    }, {
                        key: "onReady",
                        value: function () {
                            this.changing || this.hideControlBar || this.componentsController.run(),
                            this.changing && this.logger.info("onReady", "change ready", "startIndex:", this.startIndex),
                                this.streamController.startLoad(this.startIndex)
                        }
                    }, {
                        key: "onDataReady",
                        value: function () {
                            this.changing && (this.changing = !1,
                                this.play()),
                            "wait" !== this.status || this.seeking || this.play(),
                            (this.seeking || this.autoPlay && !this.paused) && this.play(this.seeking && this.seekStatus)
                        }
                    }, {
                        key: "buffer",
                        value: function () {
                            var e = this.imagePlayer.buffer()
                                , t = this.audioPlayer.buffer()
                                , n = Math.max(e.start, t.start)
                                , r = Math.min(e.end, t.end);
                            return t.isFirstPlay && (r = e.end),
                                n < r ? [n, r] : [0, 0]
                        }
                    }, {
                        key: "play",
                        value: function () {
                            var e = this
                                , t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                            this.logger.info("play", this.status),
                            t && (this.seekingAndPause = !0,
                                setTimeout((function () {
                                        e.seekingAndPause = !1,
                                            e.pause(t)
                                    }
                                ), 100)),
                            "playing" !== this.status && (this.logger.info("start play"),
                                this.status = "playing",
                            t || this.events.emit(de.PlayerPlayReady, this),
                                this.paused = !1,
                                this.action.play(this.currentTime),
                            t || this.events.emit(de.PlayerPlay, this))
                        }
                    }, {
                        key: "on",
                        value: function (e, t) {
                            this.events.on("Player." + e, t)
                        }
                    }, {
                        key: "off",
                        value: function (e, t) {
                            this.events.off("Player." + e, t)
                        }
                    }, {
                        key: "once",
                        value: function (e, t) {
                            this.events.once("Player." + e, t)
                        }
                    }, {
                        key: "pause",
                        value: function () {
                            var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                            "pause" != this.status && (this.logger.info("pause"),
                                this.status = "pause",
                                this.action.pause(),
                                this.paused = !0,
                            e || this.events.emit(de.PlayerPause, this))
                        }
                    }, {
                        key: "seek",
                        value: function (e) {
                            this.destroyed || e < this.startTime || (e >= 1e3 * this.duration ? this.logger.info("seek", "seek to time:", e) : (this.seekStatus = this.seeking ? this.seekStatus : "pause" === this.status,
                                this.seekTime = Date.now(),
                                this.seeking = !0,
                                this.currentTime = e,
                                this.events.emit(de.PlayerSeekStart, this),
                                this.action.seek(e)))
                        }
                    }, {
                        key: "muted",
                        get: function () {
                            return m()(this, ua)
                        },
                        set: function (e) {
                            k()(this, ua, !!e)
                        }
                    }, {
                        key: "playbackRate",
                        get: function () {
                            return m()(this, sa)
                        },
                        set: function (e) {
                            k()(this, sa, e)
                        }
                    }, {
                        key: "seeking",
                        get: function () {
                            return m()(this, aa)
                        },
                        set: function (e) {
                            k()(this, aa, e),
                                e ? this.events.emit(de.PlayerSeeking) : this.events.emit(de.PlayerSeekEnd)
                        }
                    }, {
                        key: "seekStatus",
                        get: function () {
                            return m()(this, oa)
                        },
                        set: function (e) {
                            k()(this, oa, e)
                        }
                    }, {
                        key: "currentTime",
                        get: function () {
                            return m()(this, ia)
                        },
                        set: function (e) {
                            k()(this, ia, e)
                        }
                    }, {
                        key: "volume",
                        get: function () {
                            return this.audioPlayer.volume
                        },
                        set: function (e) {
                            this.audioPlayer.volume = e
                        }
                    }, {
                        key: "resizeScreen",
                        value: function (e, t) {
                            R.adaptSizeElement(e, t, this.$screenContainer, this.$canvas)
                        }
                    }]),
                        n
                }(N)
                    , ca = {
                    click: "click",
                    dblclick: "dblclick"
                }
                    , ha = {
                    loop: "loop",
                    autoplay: "autoplay",
                    muted: "muted",
                    src: "src"
                }
                    , fa = new WeakMap
                    , da = new WeakMap
                    , pa = new WeakMap
                    , ya = new WeakMap
                    , va = new WeakMap
                    , ga = new WeakMap
                    , ma = new WeakMap
                    , ba = function () {
                    function e(t) {
                        i()(this, e),
                            v()(this, "playStatus", void 0),
                            v()(this, "player", null),
                            fa.set(this, {
                                writable: !0,
                                value: void 0
                            }),
                            da.set(this, {
                                writable: !0,
                                value: 0
                            }),
                            pa.set(this, {
                                writable: !0,
                                value: 0
                            }),
                            ya.set(this, {
                                writable: !0,
                                value: !1
                            }),
                            va.set(this, {
                                writable: !0,
                                value: !1
                            }),
                            ga.set(this, {
                                writable: !0,
                                value: void 0
                            }),
                            ma.set(this, {
                                writable: !0,
                                value: !1
                            }),
                            this.player = t,
                            this.playStatus = void 0,
                            this.events = T(this)(this),
                            k()(this, fa, t.options.sourceURL),
                            this._initTime = 0,
                            this.bindEvent()
                    }

                    return o()(e, [{
                        key: "loop",
                        get: function () {
                            return m()(this, ya)
                        },
                        set: function (e) {
                            k()(this, ya, !!e)
                        }
                    }, {
                        key: "src",
                        get: function () {
                            return m()(this, fa)
                        },
                        set: function (e) {
                            if (!e)
                                return this.player.destroy();
                            k()(this, va, !1),
                                k()(this, fa, e),
                                this.player.changeRate({
                                    url: e
                                })
                        }
                    }, {
                        key: "muted",
                        get: function () {
                            return this.player.audioPlayer.player.muted
                        },
                        set: function (e) {
                            this.player.audioPlayer.muted = e
                        }
                    }, {
                        key: "volume",
                        get: function () {
                            return this.player.volume
                        },
                        set: function (e) {
                            this.player.volume = e
                        }
                    }, {
                        key: "controls",
                        get: function () {
                            return !1
                        },
                        set: function (e) {
                        }
                    }, {
                        key: "crossorigin",
                        get: function () {
                            return "use-credentials"
                        },
                        set: function (e) {
                        }
                    }, {
                        key: "autoplay",
                        get: function () {
                            return this.player.autoPlay
                        },
                        set: function (e) {
                            this.player.options.autoPlay = e,
                                this.player.autoPlay = e
                        }
                    }, {
                        key: "paused",
                        get: function () {
                            return !(!this.player.seeking || !this.player.seekStatus) || !this.player.seeking && "playing" !== this.player.status
                        }
                    }, {
                        key: "ended",
                        get: function () {
                            return m()(this, ma)
                        }
                    }, {
                        key: "duration",
                        get: function () {
                            return this.player.duration
                        }
                    }, {
                        key: "currentTime",
                        get: function () {
                            return Math.max(0, (this.player.currentTime - this._initTime) / 1e3)
                        },
                        set: function (e) {
                            var t = this.player.duration - this._initTime / 1e3;
                            e >= t && (e = t - .01),
                                this.player.seek(1e3 * e + this._initTime)
                        }
                    }, {
                        key: "playbackRate",
                        get: function () {
                            return this.player.playbackRate
                        },
                        set: function (e) {
                            if (e !== this.playbackRate)
                                return this.player.changeSpeed({
                                    value: e
                                })
                        }
                    }, {
                        key: "$dom",
                        get: function () {
                            return this.player.$container
                        }
                    }, {
                        key: "nextSibling",
                        get: function () {
                            return this.$dom.parentNode.nextSibling
                        }
                    }, {
                        key: "offsetWidth",
                        get: function () {
                            return this.$dom.offsetWidth
                        }
                    }, {
                        key: "offsetHeight",
                        get: function () {
                            return this.$dom.offsetHeight
                        }
                    }, {
                        key: "offsetTop",
                        get: function () {
                            return this.$dom.offsetTop
                        }
                    }, {
                        key: "offsetLeft",
                        get: function () {
                            return this.$dom.offsetLeft
                        }
                    }, {
                        key: "clientWidth",
                        get: function () {
                            return this.$dom.clientWidth
                        }
                    }, {
                        key: "clientHeight",
                        get: function () {
                            return this.$dom.clientHeight
                        }
                    }, {
                        key: "videoWidth",
                        get: function () {
                            return m()(this, da)
                        }
                    }, {
                        key: "videoHeight",
                        get: function () {
                            return m()(this, pa)
                        }
                    }, {
                        key: "click",
                        value: function () {
                            this.$dom.click()
                        }
                    }, {
                        key: "play",
                        value: function () {
                            if (m()(this, va)) {
                                var e = this.player;
                                "end" === e.status ? this.currentTime = 0 : e.play()
                            } else
                                this.autoplay || k()(this, ga, !0)
                        }
                    }, {
                        key: "pause",
                        value: function () {
                            k()(this, ga, void 0),
                                this.player.pause()
                        }
                    }, {
                        key: "load",
                        value: function () {
                        }
                    }, {
                        key: "setAttribute",
                        value: function (e, t) {
                            ha[e] && ("src" === e ? this.src = src : this[e] = !(ha[e] !== t && "true" !== t && !0 !== t))
                        }
                    }, {
                        key: "removeAttribute",
                        value: function (e) {
                            ha[e] && ("src" === e ? this.src = "" : this[e] = !1)
                        }
                    }, {
                        key: "addEventListener",
                        value: function (e, t) {
                            ca[e] ? this.$dom && this.$dom.addEventListener(e, t) : this.events.on(e, t)
                        }
                    }, {
                        key: "removeEventListener",
                        value: function (e, t) {
                            ca[e] ? this.$dom && this.$dom.removeEventListener(e, t) : this.events.off(e, t)
                        }
                    }, {
                        key: "trigger",
                        value: function (e) {
                            for (var t, n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++)
                                r[i - 1] = arguments[i];
                            (t = this.events).emit.apply(t, [e].concat(r))
                        }
                    }, {
                        key: "registerEvent",
                        value: function (e, t, n) {
                            var r = this;
                            this.player.events.on(e, (function () {
                                    n && n.apply(void 0, arguments) || r.trigger(t, {
                                        type: t
                                    })
                                }
                            ))
                        }
                    }, {
                        key: "bindEvent",
                        value: function () {
                            var e = this
                                , t = !1
                                , n = void 0
                                , r = !0;
                            [de.PlayerWait, de.PlayerSeeking, de.PlayerReset, de.PlayerChangeRate, de.PlayerChangeSrc].forEach((function (t) {
                                    e.registerEvent(t, "waiting")
                                }
                            )),
                                this.registerEvent(de.LoaderPlayListStart, "loadstart"),
                                this.registerEvent(de.PlayerLoadedMetaData, "loadedmetadata", (function (r, i) {
                                        if (k()(e, ma, !1),
                                            t)
                                            return !0;
                                        n && (clearTimeout(n),
                                            n = void 0),
                                            k()(e, da, r),
                                            k()(e, pa, i)
                                    }
                                )),
                                this.registerEvent(de.StreamDataReady, "canplay", (function (i) {
                                        "imageReady" === i && (k()(e, va, !0),
                                        n || t || (k()(e, ma, !1),
                                            n = setTimeout((function () {
                                                    n = void 0,
                                                        t = !0,
                                                        r = !0;
                                                    var i = e.player;
                                                    i.imagePlayer && i.imagePlayer.imageData && i.imagePlayer.imageData.pool && i.imagePlayer.imageData.pool[0] && (k()(e, da, i.imagePlayer.imageData.pool[0].width),
                                                        k()(e, pa, i.imagePlayer.imageData.pool[0].height)),
                                                        e.trigger("loadedmetadata", {
                                                            type: "loadedmetadata"
                                                        }),
                                                    m()(e, ga) && (e.play(),
                                                        k()(e, ga, void 0))
                                                }
                                            ), 0)))
                                    }
                                )),
                                this.registerEvent(de.PlayerPlayReady, "play", (function () {
                                        var t = r;
                                        return r = !1,
                                            !((!e.player.seeking || t) && m()(e, va))
                                    }
                                )),
                                this.registerEvent(de.PlayerPlay, "playing"),
                                this.registerEvent(de.PlayerPause, "pause", (function () {
                                        return !(!e.player.seeking && m()(e, va))
                                    }
                                )),
                                this.registerEvent(de.PlayerSeekStart, "seeking"),
                                this.registerEvent(de.PlayerSeekEnd, "seeked"),
                                this.registerEvent(de.PlayerRatechange, "ratechange"),
                                this.registerEvent(de.PlayerTimeUpdate, "timeupdate"),
                                this.registerEvent(de.AudioPlayerDataReady, "canplaythrough"),
                                this.registerEvent(de.Volumechange, "volumechange"),
                                this.registerEvent(de.PlayerEnd, "ended", (function () {
                                        if (t = !1,
                                            n = void 0,
                                            e.loop)
                                            return e.currentTime = 0,
                                                !0;
                                        k()(e, ma, !0)
                                    }
                                )),
                                this.registerEvent(de.LoaderPlayListStart, "srcchange", (function () {
                                        t = !1,
                                            n = void 0
                                    }
                                )),
                                this.registerEvent(de.ImagePlayerInitTime, "initTime", (function (t) {
                                        t > 0 && !e.player.startTime && (e._initTime = t)
                                    }
                                ))
                        }
                    }]),
                        e
                }();

                function ka(e) {
                    var t = function () {
                        if ("undefined" == typeof Reflect || !Reflect.construct)
                            return !1;
                        if (Reflect.construct.sham)
                            return !1;
                        if ("function" == typeof Proxy)
                            return !0;
                        try {
                            return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                                }
                            ))),
                                !0
                        } catch (e) {
                            return !1
                        }
                    }();
                    return function () {
                        var n, r = p()(e);
                        if (t) {
                            var i = p()(this).constructor;
                            n = Reflect.construct(r, arguments, i)
                        } else
                            n = r.apply(this, arguments);
                        return f()(this, n)
                    }
                }

                var xa = function (e) {
                    c()(n, e);
                    var t = ka(n);

                    function n(e, r) {
                        var a;
                        return i()(this, n),
                            a = t.call(this, e, r),
                            v()(u()(a), "libPath", null),
                            a.options.processURL = r.processURL,
                            a.libPath = r.libPath,
                            a.videoGenerator = new ba(u()(a)),
                        "function" == typeof r.videoCallback && r.videoCallback(a.videoGenerator),
                        !1 !== a.options.needInit && a.init(),
                            a
                    }

                    return o()(n, [{
                        key: "updateToken",
                        value: function (e, t) {
                            this.options.playsafe = e,
                                this.options.minSeekHole = t
                        }
                    }], [{
                        key: "getComponent",
                        value: function (e) {
                            return Ri[e]
                        }
                    }, {
                        key: "registerComponent",
                        value: function (e, t) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "right"
                                , r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : -1;
                            if ("string" != typeof e || !e)
                                throw new Error('Illegal component name, "'.concat(e, '"; must be a non-empty string.'));
                            var i = Object.prototype.isPrototypeOf.call(Qn, t.prototype);
                            if (!i)
                                throw new Error('Illegal component, "'.concat(e, '"; must be a BaseComponent subclass.'));
                            Ri[e] = t,
                                Ii.addComponet(e),
                                "left" === n ? Ci.addCustomControl(e, r) : Ti.addCustomControl(e, r)
                        }
                    }, {
                        key: "createAudioContext",
                        value: function () {
                            return new (window.AudioContext || window.webkitAudioContext)
                        }
                    }]),
                        n
                }(la);
                t.default = xa
            }
            , function (e, t) {
                e.exports = function () {
                    if ("undefined" == typeof Reflect || !Reflect.construct)
                        return !1;
                    if (Reflect.construct.sham)
                        return !1;
                    if ("function" == typeof Proxy)
                        return !0;
                    try {
                        return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
                            }
                        ))),
                            !0
                    } catch (e) {
                        return !1
                    }
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t) {
                e.exports = function (e) {
                    return -1 !== Function.toString.call(e).indexOf("[native code]")
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t) {
                var n, r;
                n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
                    r = {
                        rotl: function (e, t) {
                            return e << t | e >>> 32 - t
                        },
                        rotr: function (e, t) {
                            return e << 32 - t | e >>> t
                        },
                        endian: function (e) {
                            if (e.constructor == Number)
                                return 16711935 & r.rotl(e, 8) | 4278255360 & r.rotl(e, 24);
                            for (var t = 0; t < e.length; t++)
                                e[t] = r.endian(e[t]);
                            return e
                        },
                        randomBytes: function (e) {
                            for (var t = []; e > 0; e--)
                                t.push(Math.floor(256 * Math.random()));
                            return t
                        },
                        bytesToWords: function (e) {
                            for (var t = [], n = 0, r = 0; n < e.length; n++,
                                r += 8)
                                t[r >>> 5] |= e[n] << 24 - r % 32;
                            return t
                        },
                        wordsToBytes: function (e) {
                            for (var t = [], n = 0; n < 32 * e.length; n += 8)
                                t.push(e[n >>> 5] >>> 24 - n % 32 & 255);
                            return t
                        },
                        bytesToHex: function (e) {
                            for (var t = [], n = 0; n < e.length; n++)
                                t.push((e[n] >>> 4).toString(16)),
                                    t.push((15 & e[n]).toString(16));
                            return t.join("")
                        },
                        hexToBytes: function (e) {
                            for (var t = [], n = 0; n < e.length; n += 2)
                                t.push(parseInt(e.substr(n, 2), 16));
                            return t
                        },
                        bytesToBase64: function (e) {
                            for (var t = [], r = 0; r < e.length; r += 3)
                                for (var i = e[r] << 16 | e[r + 1] << 8 | e[r + 2], a = 0; a < 4; a++)
                                    8 * r + 6 * a <= 8 * e.length ? t.push(n.charAt(i >>> 6 * (3 - a) & 63)) : t.push("=");
                            return t.join("")
                        },
                        base64ToBytes: function (e) {
                            e = e.replace(/[^A-Z0-9+\/]/gi, "");
                            for (var t = [], r = 0, i = 0; r < e.length; i = ++r % 4)
                                0 != i && t.push((n.indexOf(e.charAt(r - 1)) & Math.pow(2, -2 * i + 8) - 1) << 2 * i | n.indexOf(e.charAt(r)) >>> 6 - 2 * i);
                            return t
                        }
                    },
                    e.exports = r
            }
            , function (e, t) {
                function n(e) {
                    return !!e.constructor && "function" == typeof e.constructor.isBuffer && e.constructor.isBuffer(e)
                }

                /*!
 * Determine if an object is a Buffer
 *
 * @author   Feross Aboukhadijeh <https://feross.org>
 * @license  MIT
 */
                e.exports = function (e) {
                    return null != e && (n(e) || function (e) {
                        return "function" == typeof e.readFloatLE && "function" == typeof e.slice && n(e.slice(0, 0))
                    }(e) || !!e._isBuffer)
                }
            }
            , function (e, t, n) {
                !function () {
                    "use strict";
                    var t = n(49)
                        , r = n(94);

                    function i(e) {
                        var t = e.getContext("2d")
                            , n = null
                            , i = null
                            , a = null;
                        return this.drawFrame = function (o) {
                            var s = o.format;
                            e.width === s.displayWidth && e.height === s.displayHeight || (e.width = s.displayWidth,
                                e.height = s.displayHeight),
                            null !== n && n.width == s.width && n.height == s.height || function (e, r) {
                                for (var i = (n = t.createImageData(e, r)).data, a = e * r * 4, o = 0; o < a; o += 4)
                                    i[o + 3] = 255
                            }(s.width, s.height),
                                r.convertYCbCr(o, n.data);
                            var u, l, c, h = s.cropWidth != s.displayWidth || s.cropHeight != s.displayHeight;
                            h ? (i || (l = s.cropWidth,
                                c = s.cropHeight,
                                (i = document.createElement("canvas")).width = l,
                                i.height = c,
                                a = i.getContext("2d")),
                                u = a) : u = t,
                                u.putImageData(n, -s.cropLeft, -s.cropTop, s.cropLeft, s.cropTop, s.cropWidth, s.cropHeight),
                            h && t.drawImage(i, 0, 0, s.displayWidth, s.displayHeight)
                        }
                            ,
                            this.clear = function () {
                                t.clearRect(0, 0, e.width, e.height)
                            }
                            ,
                            this
                    }

                    i.prototype = Object.create(t.prototype),
                        e.exports = i
                }()
            }
            , function (e, t, n) {
                !function () {
                    "use strict";
                    var t = n(95);
                    /**
                     * Basic YCbCr->RGB conversion
                     *
                     * @author Brion Vibber <brion@pobox.com>
                     * @copyright 2014-2019
                     * @license MIT-style
                     *
                     * @param {YUVFrame} buffer - input frame buffer
                     * @param {Uint8ClampedArray} output - array to draw RGBA into
                     * Assumes that the output array already has alpha channel set to opaque.
                     */
                    e.exports = {
                        convertYCbCr: function (e, n) {
                            var r = 0 | e.format.width
                                , i = 0 | e.format.height
                                , a = 0 | t(e.format.width / e.format.chromaWidth)
                                , o = 0 | t(e.format.height / e.format.chromaHeight)
                                , s = e.y.bytes
                                , u = e.u.bytes
                                , l = e.v.bytes
                                , c = 0 | e.y.stride
                                , h = 0 | e.u.stride
                                , f = 0 | e.v.stride
                                , d = r << 2
                                , p = 0
                                , y = 0
                                , v = 0
                                , g = 0
                                , m = 0
                                , b = 0
                                , k = 0
                                , x = 0
                                , P = 0
                                , w = 0
                                , _ = 0
                                , B = 0
                                , T = 0
                                , E = 0
                                , S = 0
                                , C = 0
                                , R = 0
                                , L = 0;
                            if (1 == a && 1 == o)
                                for (k = 0,
                                         x = d,
                                         L = 0,
                                         C = 0; C < i; C += 2) {
                                    for (v = (y = C * c | 0) + c | 0,
                                             g = L * h | 0,
                                             m = L * f | 0,
                                             S = 0; S < r; S += 2)
                                        P = 0 | u[g++],
                                            B = (409 * (w = 0 | l[m++]) | 0) - 57088 | 0,
                                            T = (100 * P | 0) + (208 * w | 0) - 34816 | 0,
                                            E = (516 * P | 0) - 70912 | 0,
                                            _ = 298 * s[y++] | 0,
                                            n[k] = _ + B >> 8,
                                            n[k + 1] = _ - T >> 8,
                                            n[k + 2] = _ + E >> 8,
                                            k += 4,
                                            _ = 298 * s[y++] | 0,
                                            n[k] = _ + B >> 8,
                                            n[k + 1] = _ - T >> 8,
                                            n[k + 2] = _ + E >> 8,
                                            k += 4,
                                            _ = 298 * s[v++] | 0,
                                            n[x] = _ + B >> 8,
                                            n[x + 1] = _ - T >> 8,
                                            n[x + 2] = _ + E >> 8,
                                            x += 4,
                                            _ = 298 * s[v++] | 0,
                                            n[x] = _ + B >> 8,
                                            n[x + 1] = _ - T >> 8,
                                            n[x + 2] = _ + E >> 8,
                                            x += 4;
                                    k += d,
                                        x += d,
                                        L++
                                }
                            else
                                for (b = 0,
                                         C = 0; C < i; C++)
                                    for (R = 0,
                                             p = C * c | 0,
                                             g = (L = C >> o) * h | 0,
                                             m = L * f | 0,
                                             S = 0; S < r; S++)
                                        P = 0 | u[g + (R = S >> a)],
                                            B = (409 * (w = 0 | l[m + R]) | 0) - 57088 | 0,
                                            T = (100 * P | 0) + (208 * w | 0) - 34816 | 0,
                                            E = (516 * P | 0) - 70912 | 0,
                                            _ = 298 * s[p++] | 0,
                                            n[b] = _ + B >> 8,
                                            n[b + 1] = _ - T >> 8,
                                            n[b + 2] = _ + E >> 8,
                                            b += 4
                        }
                    }
                }()
            }
            , function (e, t) {
                !function () {
                    "use strict";
                    /**
                     * Convert a ratio into a bit-shift count; for instance a ratio of 2
                     * becomes a bit-shift of 1, while a ratio of 1 is a bit-shift of 0.
                     *
                     * @author Brion Vibber <brion@pobox.com>
                     * @copyright 2016
                     * @license MIT-style
                     *
                     * @param {number} ratio - the integer ratio to convert.
                     * @returns {number} - number of bits to shift to multiply/divide by the ratio.
                     * @throws exception if given a non-power-of-two
                     */
                    e.exports = function (e) {
                        for (var t = 0, n = e >> 1; 0 != n;)
                            n >>= 1,
                                t++;
                        if (e !== 1 << t)
                            throw "chroma plane dimensions must be power of 2 ratio to luma plane dimensions; got " + e;
                        return t
                    }
                }()
            }
            , function (e, t, n) {
                !function () {
                    "use strict";
                    var t = n(49)
                        , r = n(97);

                    function i(e) {
                        var t, n, a = this, o = i.contextForCanvas(e);
                        if (null === o)
                            throw new Error("WebGL unavailable");

                        function s(e, t) {
                            var n = o.createShader(e);
                            if (o.shaderSource(n, t),
                                o.compileShader(n),
                                !o.getShaderParameter(n, o.COMPILE_STATUS)) {
                                var r = o.getShaderInfoLog(n);
                                throw o.deleteShader(n),
                                    new Error("GL shader compilation for " + e + " failed: " + r)
                            }
                            return n
                        }

                        var u, l, c, h, f, d, p, y, v, g,
                            m = new Float32Array([-1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1]), b = {}, k = {}, x = {};

                        function P(e) {
                            return b[e] || (b[e] = o.createTexture()),
                                b[e]
                        }

                        function w(e, t, n, r) {
                            var a = P(e);
                            if (o.activeTexture(o.TEXTURE0),
                                i.stripe) {
                                var s = !b[e + "_temp"]
                                    , u = P(e + "_temp");
                                o.bindTexture(o.TEXTURE_2D, u),
                                    s ? (o.texParameteri(o.TEXTURE_2D, o.TEXTURE_WRAP_S, o.CLAMP_TO_EDGE),
                                        o.texParameteri(o.TEXTURE_2D, o.TEXTURE_WRAP_T, o.CLAMP_TO_EDGE),
                                        o.texParameteri(o.TEXTURE_2D, o.TEXTURE_MIN_FILTER, o.NEAREST),
                                        o.texParameteri(o.TEXTURE_2D, o.TEXTURE_MAG_FILTER, o.NEAREST),
                                        o.texImage2D(o.TEXTURE_2D, 0, o.RGBA, t / 4, n, 0, o.RGBA, o.UNSIGNED_BYTE, r)) : o.texSubImage2D(o.TEXTURE_2D, 0, 0, 0, t / 4, n, o.RGBA, o.UNSIGNED_BYTE, r);
                                var l = b[e + "_stripe"]
                                    , c = !l;
                                c && (l = P(e + "_stripe")),
                                    o.bindTexture(o.TEXTURE_2D, l),
                                c && (o.texParameteri(o.TEXTURE_2D, o.TEXTURE_WRAP_S, o.CLAMP_TO_EDGE),
                                    o.texParameteri(o.TEXTURE_2D, o.TEXTURE_WRAP_T, o.CLAMP_TO_EDGE),
                                    o.texParameteri(o.TEXTURE_2D, o.TEXTURE_MIN_FILTER, o.NEAREST),
                                    o.texParameteri(o.TEXTURE_2D, o.TEXTURE_MAG_FILTER, o.NEAREST),
                                    o.texImage2D(o.TEXTURE_2D, 0, o.RGBA, t, 1, 0, o.RGBA, o.UNSIGNED_BYTE, function (e) {
                                        if (x[e])
                                            return x[e];
                                        for (var t = e, n = new Uint32Array(t), r = 0; r < t; r += 4)
                                            n[r] = 255,
                                                n[r + 1] = 65280,
                                                n[r + 2] = 16711680,
                                                n[r + 3] = 4278190080;
                                        return x[e] = new Uint8Array(n.buffer)
                                    }(t)))
                            } else
                                o.bindTexture(o.TEXTURE_2D, a),
                                    o.texParameteri(o.TEXTURE_2D, o.TEXTURE_WRAP_S, o.CLAMP_TO_EDGE),
                                    o.texParameteri(o.TEXTURE_2D, o.TEXTURE_WRAP_T, o.CLAMP_TO_EDGE),
                                    o.texParameteri(o.TEXTURE_2D, o.TEXTURE_MIN_FILTER, o.LINEAR),
                                    o.texParameteri(o.TEXTURE_2D, o.TEXTURE_MAG_FILTER, o.LINEAR),
                                    o.texImage2D(o.TEXTURE_2D, 0, o.LUMINANCE, t, n, 0, o.LUMINANCE, o.UNSIGNED_BYTE, r)
                        }

                        function _(e, t, r) {
                            var i = b[e];
                            o.useProgram(n);
                            var a = k[e];
                            a || (o.activeTexture(o.TEXTURE0),
                                o.bindTexture(o.TEXTURE_2D, i),
                                o.texParameteri(o.TEXTURE_2D, o.TEXTURE_WRAP_S, o.CLAMP_TO_EDGE),
                                o.texParameteri(o.TEXTURE_2D, o.TEXTURE_WRAP_T, o.CLAMP_TO_EDGE),
                                o.texParameteri(o.TEXTURE_2D, o.TEXTURE_MIN_FILTER, o.LINEAR),
                                o.texParameteri(o.TEXTURE_2D, o.TEXTURE_MAG_FILTER, o.LINEAR),
                                o.texImage2D(o.TEXTURE_2D, 0, o.RGBA, t, r, 0, o.RGBA, o.UNSIGNED_BYTE, null),
                                a = k[e] = o.createFramebuffer()),
                                o.bindFramebuffer(o.FRAMEBUFFER, a),
                                o.framebufferTexture2D(o.FRAMEBUFFER, o.COLOR_ATTACHMENT0, o.TEXTURE_2D, i, 0);
                            var s = b[e + "_temp"];
                            o.activeTexture(o.TEXTURE1),
                                o.bindTexture(o.TEXTURE_2D, s),
                                o.uniform1i(d, 1);
                            var p = b[e + "_stripe"];
                            o.activeTexture(o.TEXTURE2),
                                o.bindTexture(o.TEXTURE_2D, p),
                                o.uniform1i(f, 2),
                                o.bindBuffer(o.ARRAY_BUFFER, u),
                                o.enableVertexAttribArray(l),
                                o.vertexAttribPointer(l, 2, o.FLOAT, !1, 0, 0),
                                o.bindBuffer(o.ARRAY_BUFFER, c),
                                o.enableVertexAttribArray(h),
                                o.vertexAttribPointer(h, 2, o.FLOAT, !1, 0, 0),
                                o.viewport(0, 0, t, r),
                                o.drawArrays(o.TRIANGLES, 0, m.length / 2),
                                o.bindFramebuffer(o.FRAMEBUFFER, null)
                        }

                        function B(e, n, r) {
                            o.activeTexture(n),
                                o.bindTexture(o.TEXTURE_2D, b[e]),
                                o.texParameteri(o.TEXTURE_2D, o.TEXTURE_WRAP_S, o.CLAMP_TO_EDGE),
                                o.texParameteri(o.TEXTURE_2D, o.TEXTURE_WRAP_T, o.CLAMP_TO_EDGE),
                                o.texParameteri(o.TEXTURE_2D, o.TEXTURE_MIN_FILTER, o.LINEAR),
                                o.texParameteri(o.TEXTURE_2D, o.TEXTURE_MAG_FILTER, o.LINEAR),
                                o.uniform1i(o.getUniformLocation(t, e), r)
                        }

                        function T(e, t) {
                            var n = s(o.VERTEX_SHADER, e)
                                , r = s(o.FRAGMENT_SHADER, t)
                                , i = o.createProgram();
                            if (o.attachShader(i, n),
                                o.attachShader(i, r),
                                o.linkProgram(i),
                                !o.getProgramParameter(i, o.LINK_STATUS)) {
                                var a = o.getProgramInfoLog(i);
                                throw o.deleteProgram(i),
                                    new Error("GL program linking failed: " + a)
                            }
                            return i
                        }

                        return a.drawFrame = function (s) {
                            var b = s.format
                                , k = !t || e.width !== b.displayWidth || e.height !== b.displayHeight;
                            if (k && (e.width = b.displayWidth,
                                e.height = b.displayHeight,
                                a.clear()),
                            t || function () {
                                if (i.stripe) {
                                    n = T(r.vertexStripe, r.fragmentStripe),
                                        o.getAttribLocation(n, "aPosition"),
                                        c = o.createBuffer();
                                    var e = new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]);
                                    o.bindBuffer(o.ARRAY_BUFFER, c),
                                        o.bufferData(o.ARRAY_BUFFER, e, o.STATIC_DRAW),
                                        h = o.getAttribLocation(n, "aTexturePosition"),
                                        f = o.getUniformLocation(n, "uStripe"),
                                        d = o.getUniformLocation(n, "uTexture")
                                }
                                t = T(r.vertex, r.fragment),
                                    u = o.createBuffer(),
                                    o.bindBuffer(o.ARRAY_BUFFER, u),
                                    o.bufferData(o.ARRAY_BUFFER, m, o.STATIC_DRAW),
                                    l = o.getAttribLocation(t, "aPosition"),
                                    p = o.createBuffer(),
                                    y = o.getAttribLocation(t, "aLumaPosition"),
                                    v = o.createBuffer(),
                                    g = o.getAttribLocation(t, "aChromaPosition")
                            }(),
                                k) {
                                var x = function (e, t, n) {
                                    var r = b.cropLeft / n
                                        , i = (b.cropLeft + b.cropWidth) / n
                                        , a = (b.cropTop + b.cropHeight) / b.height
                                        , s = b.cropTop / b.height
                                        , u = new Float32Array([r, a, i, a, r, s, r, s, i, a, i, s]);
                                    o.bindBuffer(o.ARRAY_BUFFER, e),
                                        o.bufferData(o.ARRAY_BUFFER, u, o.STATIC_DRAW)
                                };
                                x(p, 0, s.y.stride),
                                    x(v, 0, s.u.stride * b.width / b.chromaWidth)
                            }
                            w("uTextureY", s.y.stride, b.height, s.y.bytes),
                                w("uTextureCb", s.u.stride, b.chromaHeight, s.u.bytes),
                                w("uTextureCr", s.v.stride, b.chromaHeight, s.v.bytes),
                            i.stripe && (_("uTextureY", s.y.stride, b.height),
                                _("uTextureCb", s.u.stride, b.chromaHeight),
                                _("uTextureCr", s.v.stride, b.chromaHeight)),
                                o.useProgram(t),
                                o.viewport(0, 0, e.width, e.height),
                                B("uTextureY", o.TEXTURE0, 0),
                                B("uTextureCb", o.TEXTURE1, 1),
                                B("uTextureCr", o.TEXTURE2, 2),
                                o.bindBuffer(o.ARRAY_BUFFER, u),
                                o.enableVertexAttribArray(l),
                                o.vertexAttribPointer(l, 2, o.FLOAT, !1, 0, 0),
                                o.bindBuffer(o.ARRAY_BUFFER, p),
                                o.enableVertexAttribArray(y),
                                o.vertexAttribPointer(y, 2, o.FLOAT, !1, 0, 0),
                                o.bindBuffer(o.ARRAY_BUFFER, v),
                                o.enableVertexAttribArray(g),
                                o.vertexAttribPointer(g, 2, o.FLOAT, !1, 0, 0),
                                o.drawArrays(o.TRIANGLES, 0, m.length / 2)
                        }
                            ,
                            a.clear = function () {
                                o.viewport(0, 0, e.width, e.height),
                                    o.clearColor(0, 0, 0, 0),
                                    o.clear(o.COLOR_BUFFER_BIT)
                            }
                            ,
                            a.clear(),
                            a
                    }

                    i.stripe = -1 !== navigator.userAgent.indexOf("Windows"),
                        i.contextForCanvas = function (e) {
                            var t = {
                                preferLowPowerToHighPerformance: !0,
                                powerPreference: "low-power",
                                failIfMajorPerformanceCaveat: !0,
                                preserveDrawingBuffer: !0
                            };
                            return e.getContext("webgl", t) || e.getContext("experimental-webgl", t)
                        }
                        ,
                        i.isAvailable = function () {
                            var e, t = document.createElement("canvas");
                            t.width = 1,
                                t.height = 1;
                            try {
                                e = i.contextForCanvas(t)
                            } catch (e) {
                                return !1
                            }
                            if (e) {
                                var n = e.TEXTURE0
                                    , r = e.createTexture()
                                    , a = new Uint8Array(16)
                                    , o = i.stripe ? 1 : 4
                                    , s = i.stripe ? e.RGBA : e.LUMINANCE
                                    , u = i.stripe ? e.NEAREST : e.LINEAR;
                                return e.activeTexture(n),
                                    e.bindTexture(e.TEXTURE_2D, r),
                                    e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE),
                                    e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE),
                                    e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, u),
                                    e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, u),
                                    e.texImage2D(e.TEXTURE_2D, 0, s, o, 4, 0, s, e.UNSIGNED_BYTE, a),
                                    !e.getError()
                            }
                            return !1
                        }
                        ,
                        i.prototype = Object.create(t.prototype),
                        e.exports = i
                }()
            }
            , function (e, t) {
                e.exports = {
                    vertex: "precision lowp float;\n\nattribute vec2 aPosition;\nattribute vec2 aLumaPosition;\nattribute vec2 aChromaPosition;\nvarying vec2 vLumaPosition;\nvarying vec2 vChromaPosition;\nvoid main() {\n    gl_Position = vec4(aPosition, 0, 1);\n    vLumaPosition = aLumaPosition;\n    vChromaPosition = aChromaPosition;\n}\n",
                    fragment: "// inspired by https://github.com/mbebenita/Broadway/blob/master/Player/canvas.js\n\nprecision lowp float;\n\nuniform sampler2D uTextureY;\nuniform sampler2D uTextureCb;\nuniform sampler2D uTextureCr;\nvarying vec2 vLumaPosition;\nvarying vec2 vChromaPosition;\nvoid main() {\n   // Y, Cb, and Cr planes are uploaded as LUMINANCE textures.\n   float fY = texture2D(uTextureY, vLumaPosition).x;\n   float fCb = texture2D(uTextureCb, vChromaPosition).x;\n   float fCr = texture2D(uTextureCr, vChromaPosition).x;\n\n   // Premultipy the Y...\n   float fYmul = fY * 1.1643828125;\n\n   // And convert that to RGB!\n   gl_FragColor = vec4(\n     fYmul + 1.59602734375 * fCr - 0.87078515625,\n     fYmul - 0.39176171875 * fCb - 0.81296875 * fCr + 0.52959375,\n     fYmul + 2.017234375   * fCb - 1.081390625,\n     1\n   );\n}\n",
                    vertexStripe: "precision lowp float;\n\nattribute vec2 aPosition;\nattribute vec2 aTexturePosition;\nvarying vec2 vTexturePosition;\n\nvoid main() {\n    gl_Position = vec4(aPosition, 0, 1);\n    vTexturePosition = aTexturePosition;\n}\n",
                    fragmentStripe: "// extra 'stripe' texture fiddling to work around IE 11's poor performance on gl.LUMINANCE and gl.ALPHA textures\n\nprecision lowp float;\n\nuniform sampler2D uStripe;\nuniform sampler2D uTexture;\nvarying vec2 vTexturePosition;\nvoid main() {\n   // Y, Cb, and Cr planes are mapped into a pseudo-RGBA texture\n   // so we can upload them without expanding the bytes on IE 11\n   // which doesn't allow LUMINANCE or ALPHA textures\n   // The stripe textures mark which channel to keep for each pixel.\n   // Each texture extraction will contain the relevant value in one\n   // channel only.\n\n   float fLuminance = dot(\n      texture2D(uStripe, vTexturePosition),\n      texture2D(uTexture, vTexturePosition)\n   );\n\n   gl_FragColor = vec4(fLuminance, fLuminance, fLuminance, 1);\n}\n"
                }
            }
            , function (e, t, n) {
                "use strict";
                n.r(t);
                var r = n(2)
                    , i = n.n(r)
                    , a = n(4)
                    , o = n.n(a)
                    , s = n(0)
                    , u = n.n(s)
                    , l = n(61)
                    , c = n.n(l)
                    , h = n(12)
                    , f = n.n(h)
                    , d = n(29)
                    , p = n.n(d)
                    , y = n(20)
                    , v = n.n(y)
                    , g = n(11)
                    , m = n(25);

                function b(e, t) {
                    var n;
                    if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                        if (Array.isArray(e) || (n = function (e, t) {
                            if (!e)
                                return;
                            if ("string" == typeof e)
                                return k(e, t);
                            var n = Object.prototype.toString.call(e).slice(8, -1);
                            "Object" === n && e.constructor && (n = e.constructor.name);
                            if ("Map" === n || "Set" === n)
                                return Array.from(e);
                            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                                return k(e, t)
                        }(e)) || t && e && "number" == typeof e.length) {
                            n && (e = n);
                            var r = 0
                                , i = function () {
                            };
                            return {
                                s: i,
                                n: function () {
                                    return r >= e.length ? {
                                        done: !0
                                    } : {
                                        done: !1,
                                        value: e[r++]
                                    }
                                },
                                e: function (e) {
                                    throw e
                                },
                                f: i
                            }
                        }
                        throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                    }
                    var a, o = !0, s = !1;
                    return {
                        s: function () {
                            n = e[Symbol.iterator]()
                        },
                        n: function () {
                            var e = n.next();
                            return o = e.done,
                                e
                        },
                        e: function (e) {
                            s = !0,
                                a = e
                        },
                        f: function () {
                            try {
                                o || null == n.return || n.return()
                            } finally {
                                if (s)
                                    throw a
                            }
                        }
                    }
                }

                function k(e, t) {
                    (null == t || t > e.length) && (t = e.length);
                    for (var n = 0, r = new Array(t); n < t; n++)
                        r[n] = e[n];
                    return r
                }

                var x = g.a.get("HTTP.js", {
                    level: 2
                })
                    , P = function () {
                    var e = p()(v.a.mark((function e(t) {
                            var n;
                            return v.a.wrap((function (e) {
                                    for (; ;)
                                        switch (e.prev = e.next) {
                                            case 0:
                                                if (!(t instanceof Blob)) {
                                                    e.next = 5;
                                                    break
                                                }
                                                return e.next = 3,
                                                    new Response(t).arrayBuffer();
                                            case 3:
                                                return n = e.sent,
                                                    e.abrupt("return", new Uint8Array(n, 0));
                                            case 5:
                                            case "end":
                                                return e.stop()
                                        }
                                }
                            ), e)
                        }
                    )));
                    return function (t) {
                        return e.apply(this, arguments)
                    }
                }();
                var w = function (e) {
                    if (e)
                        return Object.entries(e).reduce((function (e, t, n) {
                                var r = c()(t, 2)
                                    , i = r[0]
                                    , a = r[1];
                                return e + (0 === n ? i + "=" + encodeURIComponent(a) : "&" + i + "=" + encodeURIComponent(a))
                            }
                        ), "")
                };

                function _(e, t) {
                    var n = ("function" == typeof e.clone ? e.clone() : void 0) || e
                        , r = function (e, t) {
                        var n = {
                            body: t,
                            headers: function (e) {
                                return e.headers.entries ? function (e) {
                                    var t, n = Object.create(Object.getPrototypeOf(e.headers)),
                                        r = b(e.headers.entries());
                                    try {
                                        for (r.s(); !(t = r.n()).done;) {
                                            var i = c()(t.value, 2)
                                                , a = i[0]
                                                , o = i[1];
                                            n[a] = o
                                        }
                                    } catch (e) {
                                        r.e(e)
                                    } finally {
                                        r.f()
                                    }
                                    return n
                                }(e) : function (e) {
                                    var t = {}
                                        , n = e.headers.__headers__;
                                    for (var r in n)
                                        t[r] = n[r].join("");
                                    return t
                                }(e)
                            }(e),
                            response: e,
                            status: e.status,
                            statusText: e.statusText
                        };
                        return e.ok ? Promise.resolve(n) : Promise.reject(n)
                    };
                    return e[t]().then((function (e) {
                            return r(n, e)
                        }
                    ))
                }

                function B(e, t) {
                    var n = e.headers.get("content-type")
                        , r = e.clone().body.getReader()
                        , i = 0
                        , a = i
                        , o = setInterval((function () {
                            var e = 50 * (i - a);
                            e <= 1 || (x.info("HTTP>handleResponse", "".concat(a, " | ").concat(i), "".concat(e.toFixed(2), " Bytes/s")),
                                self.postMessage({
                                    type: "notice",
                                    method: "fetch",
                                    noticeType: "speed",
                                    data: {
                                        speed: e,
                                        intervalValue: 20,
                                        lastReceived: a,
                                        bytesReceived: i
                                    }
                                }),
                                a = i)
                        }
                    ), 20);
                    return r.read().then((function a(s) {
                            return s.done ? (clearInterval(o),
                                function () {
                                    if ("ts" === t || "video" === t)
                                        return _(e, "blob");
                                    if (n.includes("json"))
                                        return _(e, "json");
                                    if (n.includes("text"))
                                        return _(e, "text");
                                    if (n.includes("form"))
                                        return _(e, "formData");
                                    if (n.includes("video") || n.includes("image") || n.includes("octet-stream"))
                                        return _(e, "blob");
                                    try {
                                        return _(e, "text")
                                    } catch (t) {
                                        return Object(m.a)(t, "[HTTP>handleResponse:unknow content-type]", n, e),
                                            Promise.resolve(e)
                                    }
                                }()) : (i += s.value.length,
                                r.read().then(a))
                        }
                    ))
                }

                var T = null
                    , E = (T || (T = new (function () {
                    function e(t) {
                        i()(this, e),
                            u()(this, "options", {
                                "content-type": "application/json;charset=UTF-8",
                                cache: "no-cache",
                                mode: "cors"
                            }),
                            Object.assign(this.options, t, {
                                referrer: self.location.origin || ""
                            })
                    }

                    var t;
                    return o()(e, [{
                        key: "setOptions",
                        value: function (e) {
                            var t = Object.assign(this.options, e);
                            t.url = function (e) {
                                var t = e.url
                                    , n = e.params;
                                return n ? t + "?" + w(n) : t
                            }(t),
                                t.method = t.method || "get",
                                t.headers = function () {
                                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}
                                        , t = e.headers
                                        , n = void 0 === t ? {} : t
                                        , r = e.method
                                        , i = void 0 === r ? "get" : r
                                        , a = e.username
                                        , o = e.password
                                        , s = e.token
                                        , u = new Headers(n);
                                    if (a || o) {
                                        if (!a)
                                            throw new TypeError("username required for basic authentication");
                                        if (!o)
                                            throw new TypeError("password required for basic authentication");
                                        var l = "object" === ("undefined" == typeof win ? "undefined" : f()(win)) && win.btoa ? btoa : function (e) {
                                                return e
                                            }
                                        ;
                                        u.set("Authorization", "Basic " + l(a + ":" + o))
                                    }
                                    return s && u.set("Authorization", "Bearer " + s),
                                    "get" === i || u.get("content-type") || u.set("content-type", "application/json"),
                                        u
                                }(t),
                                t.body = function (e) {
                                    var t = e.headers.get("content-type");
                                    if (t)
                                        return t.includes("json") ? JSON.stringify(e.body) : t.includes("x-www-form-urlencoded") ? w(e.body) : e.body
                                }(t),
                                delete t.username,
                                delete t.password,
                                delete t.token,
                                this.options = t
                        }
                    }, {
                        key: "request",
                        value: function (e) {
                            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}
                                , n = arguments.length > 2 ? arguments[2] : void 0;
                            if (e)
                                return this.setOptions(Object.assign({
                                    url: e
                                }, t)),
                                    fetch(this.options.url, this.options).then((function (e) {
                                            return B(e, n)
                                        }
                                    ));
                            x.error("[HTTP>request]", "url is undefined", "url:", e, "options:", t)
                        }
                    }, {
                        key: "fetch",
                        value: function (e) {
                            function t(t) {
                                return e.apply(this, arguments)
                            }

                            return t.toString = function () {
                                return e.toString()
                            }
                                ,
                                t
                        }(function () {
                            var e = p()(v.a.mark((function e(t) {
                                    var n, r, i, a, o = arguments;
                                    return v.a.wrap((function (e) {
                                            for (; ;)
                                                switch (e.prev = e.next) {
                                                    case 0:
                                                        if (n = o.length > 1 && void 0 !== o[1] ? o[1] : {},
                                                            r = o.length > 2 ? o[2] : void 0,
                                                            i = o.length > 3 ? o[3] : void 0,
                                                            t) {
                                                            e.next = 6;
                                                            break
                                                        }
                                                        return x.wran("[HTTP>fetch]", "url is undefined", "url:", t, "options:", n),
                                                            e.abrupt("return");
                                                    case 6:
                                                        return this.setOptions(Object.assign({
                                                            url: t
                                                        }, n)),
                                                            x.info("[HTTP>fetch]", "http fetch", "url:", t, "options:", n),
                                                            e.next = 10,
                                                            fetch(t, n);
                                                    case 10:
                                                        (a = e.sent).ok ? a.text().then((function (e) {
                                                                self.postMessage({
                                                                    type: "invoke",
                                                                    method: "fetch",
                                                                    fileType: i,
                                                                    name: r,
                                                                    data: e
                                                                })
                                                            }
                                                        )) : self.postMessage({
                                                            result: "failed"
                                                        });
                                                    case 12:
                                                    case "end":
                                                        return e.stop()
                                                }
                                        }
                                    ), e, this)
                                }
                            )));
                            return function (t) {
                                return e.apply(this, arguments)
                            }
                        }())
                    }, {
                        key: "get",
                        value: (t = p()(v.a.mark((function e(t) {
                                    var n, r, i, a, o, s = arguments;
                                    return v.a.wrap((function (e) {
                                            for (; ;)
                                                switch (e.prev = e.next) {
                                                    case 0:
                                                        return n = s.length > 1 && void 0 !== s[1] ? s[1] : {},
                                                            r = s.length > 2 ? s[2] : void 0,
                                                            i = s.length > 3 ? s[3] : void 0,
                                                            n.method = "get",
                                                            x.info("[HTTP>get]", "http get", "url:", t, "options:", n, "name:", r, "fileType:", i),
                                                            o = {
                                                                type: "invoke",
                                                                method: "get",
                                                                fileType: i,
                                                                name: r,
                                                                url: t
                                                            },
                                                            e.prev = 6,
                                                            e.next = 9,
                                                            this.request.call(this, t, n, i);
                                                    case 9:
                                                        a = e.sent,
                                                            e.next = 15;
                                                        break;
                                                    case 12:
                                                        e.prev = 12,
                                                            e.t0 = e.catch(6),
                                                            x.error("[HTTP>get]", "networks error", "url:", t, "options:", n, "name:", r, "fileType:", i, "ex:", e.t0);
                                                    case 15:
                                                        if (!a || !a.body) {
                                                            e.next = 24;
                                                            break
                                                        }
                                                        if (o.data = a.body,
                                                        "ts" !== i && "video" !== i && "key" !== i) {
                                                            e.next = 21;
                                                            break
                                                        }
                                                        return e.next = 20,
                                                            P(o.data);
                                                    case 20:
                                                        o.arrayBuffer = e.sent;
                                                    case 21:
                                                        o.arrayBuffer ? self.postMessage(o, [o.arrayBuffer.buffer]) : self.postMessage(o),
                                                            e.next = 27;
                                                        break;
                                                    case 24:
                                                        o.type = "error",
                                                            o.data = a,
                                                            self.postMessage(o);
                                                    case 27:
                                                    case "end":
                                                        return e.stop()
                                                }
                                        }
                                    ), e, this, [[6, 12]])
                                }
                            ))),
                                function (e) {
                                    return t.apply(this, arguments)
                                }
                        )
                    }]),
                        e
                }())({})),
                    T);
                t.default = function (e) {
                    e.onmessage = function (e) {
                        var t = e.data
                            , n = t.type
                            , r = t.method;
                        switch (n) {
                            case "invoke":
                                E[r].call(E, t.url, t.options, t.name, t.fileType)
                        }
                    }
                }
            }
            , function (e, t) {
                e.exports = function (e) {
                    if (Array.isArray(e))
                        return e
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t) {
                e.exports = function (e, t) {
                    if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) {
                        var n = []
                            , r = !0
                            , i = !1
                            , a = void 0;
                        try {
                            for (var o, s = e[Symbol.iterator](); !(r = (o = s.next()).done) && (n.push(o.value),
                            !t || n.length !== t); r = !0)
                                ;
                        } catch (e) {
                            i = !0,
                                a = e
                        } finally {
                            try {
                                r || null == s.return || s.return()
                            } finally {
                                if (i)
                                    throw a
                            }
                        }
                        return n
                    }
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t, n) {
                var r = n(102);
                e.exports = function (e, t) {
                    if (e) {
                        if ("string" == typeof e)
                            return r(e, t);
                        var n = Object.prototype.toString.call(e).slice(8, -1);
                        return "Object" === n && e.constructor && (n = e.constructor.name),
                            "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? r(e, t) : void 0
                    }
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t) {
                e.exports = function (e, t) {
                    (null == t || t > e.length) && (t = e.length);
                    for (var n = 0, r = new Array(t); n < t; n++)
                        r[n] = e[n];
                    return r
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , function (e, t) {
                e.exports = function () {
                    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                }
                    ,
                    e.exports.default = e.exports,
                    e.exports.__esModule = !0
            }
            , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function (e, t, n) {
                "use strict";
                n.r(t);
                var r, i = n(2), a = n.n(i), o = n(4), s = n.n(o), u = n(9), l = function () {
                    function e(t) {
                        a()(this, e),
                            this.decode = t,
                            this.result = [],
                            this.t
                    }

                    return s()(e, [{
                        key: "openDecode",
                        value: function () {
                            var e = this
                                , t = this
                                , n = 0
                                , r = 0
                                , i = 0
                                , a = Module.addFunction((function (a, o, s, u, l, c, h, f, d) {
                                    var p, y = HEAPU8.subarray(a, a + u * f), v = HEAPU8.subarray(o, o + l * f / 2),
                                        g = HEAPU8.subarray(s, s + c * f / 2), m = {
                                            stride_y: u,
                                            stride_u: l,
                                            stride_v: c,
                                            width: h,
                                            height: f,
                                            buf_y: new Uint8Array(y),
                                            buf_u: new Uint8Array(v),
                                            buf_v: new Uint8Array(g),
                                            pts: d
                                        }, b = e.t;
                                    b && (p = performance.now() - b,
                                        r += p,
                                        i++),
                                        e.t = performance.now(),
                                    10 === ++n && function () {
                                        n = 0;
                                        Math.ceil(r / i);
                                        r = 0,
                                            i = 0
                                    }(),
                                        t.push(m)
                                }
                            ), "viiiiiiiii");
                            Module._openDecoder(0, a, 1)
                        }
                    }, {
                        key: "setDecode",
                        value: function (e) {
                            var t = new Uint32Array(e)
                                , n = t.length
                                , r = function (e, t) {
                                var n = e.length * e.BYTES_PER_ELEMENT
                                    , r = t._malloc(n)
                                    , i = new Uint32Array(t.HEAPU32.buffer, r, n);
                                return i.set(new Uint32Array(e.buffer)),
                                    i
                            }(t, Module);
                            Module._setDecoder(r.byteOffset, n)
                        }
                    }, {
                        key: "push",
                        value: function (e) {
                            this.result.push(e)
                        }
                    }, {
                        key: "decodeData",
                        value: function (e, t) {
                            var n = e.length
                                , r = Module._malloc(n);
                            Module.HEAPU8.set(e, r),
                                Module._decodeData(r, n, t),
                                Module._free(r)
                        }
                    }, {
                        key: "flush",
                        value: function () {
                            for (Module._flushDecoder(); this.checkData();)
                                this.decode.getDecodeYUV()
                        }
                    }, {
                        key: "closeDecode",
                        value: function () {
                            Module._closeDecoder()
                        }
                    }, {
                        key: "getYUV",
                        value: function () {
                            var e = null;
                            return this.result.length > 0 && (e = this.result.shift()),
                                e
                        }
                    }, {
                        key: "checkData",
                        value: function () {
                            return this.result.length > 0
                        }
                    }]),
                        e
                }(), c = function () {
                    function e(t) {
                        a()(this, e),
                            this.decode = t
                    }

                    return s()(e, [{
                        key: "openDecode",
                        value: function () {
                            return _web_decoder_open()
                        }
                    }, {
                        key: "closeDecode",
                        value: function (e) {
                            _web_decoder_close(e)
                        }
                    }, {
                        key: "decodeData",
                        value: function (e, t, n) {
                            var r = e.length || 0;
                            Module.ccall("web_decoder_decode_frame", "number", ["number", "array", "number", "number"], [n, e, r, t])
                        }
                    }, {
                        key: "flush",
                        value: function (e) {
                            var t = this.decode;
                            if (_web_decoder_decode_frame)
                                for (; ;) {
                                    if (_web_decoder_decode_frame(e, null, 0, 0) < 0 || !_web_got_frame(e))
                                        break;
                                    t.getDecodeYUV(e)
                                }
                        }
                    }, {
                        key: "getYUV",
                        value: function (e) {
                            var t = _web_get_stride_y(e)
                                , n = _web_get_stride_u(e)
                                , r = _web_get_stride_v(e)
                                , i = _web_get_width(e)
                                , a = _web_get_height(e)
                                , o = _web_get_frame_y(e)
                                , s = _web_get_frame_u(e)
                                , l = _web_get_frame_v(e)
                                , c = parseInt(_web_got_frame_pts(e) * u.a * 1e3)
                                , h = HEAPU8.subarray(o, o + t * a)
                                , f = HEAPU8.subarray(s, s + n * a / 2)
                                , d = HEAPU8.subarray(l, l + r * a / 2);
                            return {
                                stride_y: t,
                                stride_u: n,
                                stride_v: r,
                                width: i,
                                height: a,
                                buf_y: new Uint8Array(h),
                                buf_u: new Uint8Array(f),
                                buf_v: new Uint8Array(d),
                                pts: c
                            }
                        }
                    }, {
                        key: "checkData",
                        value: function (e) {
                            return _web_got_frame(e)
                        }
                    }]),
                        e
                }(), h = function () {
                    function e() {
                        a()(this, e),
                            this.p = null,
                            this.ptsList = [],
                            this.ptsOffset = 0,
                            this.fps = 0,
                            this.lastDuration = 0,
                            this.previousPTS = 0,
                            this.status = !1,
                            this.yuvArray = [],
                            this.decodeTool = null,
                            this.rgbArray = void 0
                    }

                    return s()(e, [{
                        key: "loadWASM",
                        value: function (e) {
                            var t = e.data.libPath;
                            self.Module = {
                                locateFile: function (e) {
                                    return t + e
                                }
                            },
                                self.importScripts(t + "lib_player.js"),
                                self.Module.onRuntimeInitialized = function () {
                                    Module._web_decoder_open ? self.decode.decodeTool = new c(self.decode, this.event) : self.decode.decodeTool = new l(self.decode, this.event),
                                        self.decode.openDecode(),
                                        self.decode.onWasmLoaded(),
                                    self.decode.rgbArray && self.decode.loadPx(self.decode.rgbArray)
                                }
                        }
                    }, {
                        key: "loadPx",
                        value: function (e) {
                            this.decodeTool ? this.decodeTool.setDecode(e) : this.rgbArray = e
                        }
                    }, {
                        key: "openDecode",
                        value: function () {
                            try {
                                this.status || (this.p = this.decodeTool.openDecode(),
                                    this.status = !0)
                            } catch (e) {
                                console.error(e)
                            }
                        }
                    }, {
                        key: "closeDecode",
                        value: function () {
                            this.status && (this.decodeTool.closeDecode(this.p),
                                this.status = !1)
                        }
                    }, {
                        key: "push",
                        value: function (e) {
                            var t = this;
                            e.forEach((function (e) {
                                    var n = e.PTS
                                        , r = e.data_byte
                                        , i = e.partEnd
                                        , a = e.lastTS
                                        , o = t.ptsList;
                                    t.insertSort(o, parseInt(n * u.a * 1e3)),
                                        t.decodeTool.decodeData(r, n, t.p),
                                    t.decodeTool.checkData(t.p) && t.getDecodeYUV(t.p, i, a)
                                }
                            )),
                            this.yuvArray.length > 0 && (self.postMessage({
                                type: "decoded",
                                data: this.yuvArray
                            }),
                                this.yuvArray.forEach((function (e) {
                                        delete e.buf_y,
                                            delete e.buf_u,
                                            delete e.buf_v
                                    }
                                )),
                                this.yuvArray = [])
                        }
                    }, {
                        key: "getDecodeYUV",
                        value: function (e, t, n) {
                            if (!this.reseting) {
                                var r = 0;
                                this.fps || (this.fps = this.getFPS());
                                var i = this.decodeTool.getYUV(e)
                                    , a = this.ptsList.shift();
                                if (i.pts = a,
                                    this.previousPTS && a ? (r = parseInt(a - this.previousPTS),
                                        this.lastDuration = r) : r = this.lastDuration,
                                    i.duration = r,
                                    i.fps = this.fps,
                                    a)
                                    this.previousPTS = a,
                                        this.yuvArray.push(i),
                                    this.yuvArray.length > 9 && (self.postMessage({
                                        type: "decoded",
                                        data: this.yuvArray
                                    }),
                                        this.yuvArray.forEach((function (e) {
                                                delete e.buf_y,
                                                    delete e.buf_u,
                                                    delete e.buf_v
                                            }
                                        )),
                                        this.yuvArray = []);
                                t && (this.yuvArray.length && (self.postMessage({
                                    type: "decoded",
                                    data: this.yuvArray
                                }),
                                    this.yuvArray = []),
                                    self.postMessage({
                                        type: "partEnd",
                                        data: n
                                    }))
                            }
                        }
                    }, {
                        key: "reset",
                        value: function () {
                            this.reseting = !0,
                                this.ptsList = [],
                                this.ptsOffset = 0,
                                this.previousPTS = 0,
                                this.fps = 0,
                                this.yuvArray = [],
                                this.closeDecode(),
                                this.openDecode(),
                                self.postMessage({
                                    type: "resetEnd",
                                    data: Date.now()
                                }),
                                this.reseting = !1
                        }
                    }, {
                        key: "flush",
                        value: function () {
                            this.decodeTool.flush(this.p),
                            this.yuvArray.length && (self.postMessage({
                                type: "decoded",
                                data: this.yuvArray
                            }),
                                this.yuvArray = []),
                                this.closeDecode(),
                                self.postMessage({
                                    type: "flushEnd",
                                    data: this.previousPTS
                                })
                        }
                    }, {
                        key: "getFPS",
                        value: function () {
                            var e = this.ptsList;
                            return e.length >= 2 ? Math.round(1e3 / (e[1] - e[0])) : null
                        }
                    }, {
                        key: "onWasmLoaded",
                        value: function () {
                            self.postMessage({
                                type: "dataProcessorReady"
                            })
                        }
                    }, {
                        key: "insertSort",
                        value: function (e, t) {
                            var n = e.length;
                            if (0 !== n) {
                                for (var r = 0; r < n; r++)
                                    if (t < e[r]) {
                                        for (var i = n; i > r;)
                                            e[i] = e[i - 1],
                                                i--;
                                        return void (e[r] = t)
                                    }
                                e.push(t)
                            } else
                                e.push(t)
                        }
                    }]),
                        e
                }(), f = n(0), d = n.n(f);
                !function (e) {
                    e.ERROR = "ERROR",
                        e.INFO = "INFO",
                        e.DATA = "DATA",
                        e.DEMUX_DATA = "DEMUX_DATA",
                        e.DONE = "DONE"
                }(r || (r = {}));
                var p = Object.create || function (e) {
                        var t = function () {
                        };
                        return t.prototype = e,
                            new t
                    }
                    , y = Object.keys || function (e) {
                        for (var t in e)
                            Object.prototype.hasOwnProperty.call(e, t);
                        return t
                    }
                    , v = Function.prototype.bind || function (e) {
                        var t = this;
                        return function () {
                            return t.apply(e, arguments)
                        }
                    }
                ;
                let g, m = 10;

                class b {
                    constructor() {
                        this._events && Object.prototype.hasOwnProperty.call(this, "_events") || (this._events = p(null),
                            this._eventsCount = 0),
                            this._maxListeners = this._maxListeners || void 0
                    }

                    static listenerCount(e, t) {
                        return "function" == typeof e.listenerCount ? e.listenerCount(t) : _.call(e, t)
                    }

                    emit(e, ...t) {
                        var n, r, i, a, o, s, u = "error" === e;
                        if (s = this._events)
                            u = u && null == s.error;
                        else if (!u)
                            return !1;
                        if (u) {
                            if (arguments.length > 1 && (n = arguments[1]),
                            n instanceof Error)
                                throw n;
                            var l = new Error('Unhandled "error" event. (' + n + ")");
                            throw l.context = n,
                                l
                        }
                        if (!(r = s[e]))
                            return !1;
                        var c = "function" == typeof r;
                        switch (i = arguments.length) {
                            case 1:
                                !function (e, t, n) {
                                    if (t)
                                        e.call(n);
                                    else
                                        for (var r = e.length, i = B(e, r), a = 0; a < r; ++a)
                                            try {
                                                i[a].call(n)
                                            } catch (e) {
                                                console.error(e)
                                            }
                                }(r, c, this);
                                break;
                            case 2:
                                !function (e, t, n, r) {
                                    if (t)
                                        e.call(n, r);
                                    else
                                        for (var i = e.length, a = B(e, i), o = 0; o < i; ++o)
                                            try {
                                                a[o].call(n, r)
                                            } catch (e) {
                                                console.error(e)
                                            }
                                }(r, c, this, arguments[1]);
                                break;
                            case 3:
                                !function (e, t, n, r, i) {
                                    if (t)
                                        e.call(n, r, i);
                                    else
                                        for (var a = e.length, o = B(e, a), s = 0; s < a; ++s)
                                            try {
                                                o[s].call(n, r, i)
                                            } catch (e) {
                                                console.error(e)
                                            }
                                }(r, c, this, arguments[1], arguments[2]);
                                break;
                            case 4:
                                !function (e, t, n, r, i, a) {
                                    if (t)
                                        e.call(n, r, i, a);
                                    else
                                        for (var o = e.length, s = B(e, o), u = 0; u < o; ++u)
                                            try {
                                                s[u].call(n, r, i, a)
                                            } catch (e) {
                                                console.error(e)
                                            }
                                }(r, c, this, arguments[1], arguments[2], arguments[3]);
                                break;
                            default:
                                for (a = new Array(i - 1),
                                         o = 1; o < i; o++)
                                    a[o - 1] = arguments[o];
                                !function (e, t, n, r) {
                                    if (t)
                                        e.apply(n, r);
                                    else
                                        for (var i = e.length, a = B(e, i), o = 0; o < i; ++o)
                                            try {
                                                a[o].apply(n, r)
                                            } catch (e) {
                                                console.error(e)
                                            }
                                }(r, c, this, a)
                        }
                        return !0
                    }

                    on(e, t) {
                        return function (e, t, n) {
                            var r, i, a;
                            if ("function" != typeof n)
                                throw new TypeError('"listener" argument must be a function');
                            (i = e._events) ? (i.newListener && (e.emit("newListener", t, n.listener ? n.listener : n),
                                i = e._events),
                                a = i[t]) : (i = e._events = p(null),
                                e._eventsCount = 0);
                            if (a) {
                                if ("function" == typeof a ? a = i[t] = [a, n] : a.push(n),
                                !a.warned && (r = void 0 === (o = e)._maxListeners ? b.defaultMaxListeners : o._maxListeners) && r > 0 && a.length > r) {
                                    a.warned = !0;

                                    class n extends Error {
                                    }

                                    let r = new n("Possible Dispatcher memory leak detected. " + a.length + ' "' + String(t) + '" listeners added. Use emitter.setMaxListeners() to increase limit.');
                                    r.name = "MaxListenersExceededWarning",
                                        r.emitter = e,
                                        r.type = t,
                                        r.count = a.length,
                                    "object" == typeof console && console.warn && console.warn("%s: %s", r.name, r.message)
                                }
                            } else
                                a = i[t] = n,
                                    ++e._eventsCount;
                            var o;
                            return e
                        }(this, e, t)
                    }

                    once(e, t) {
                        if ("function" != typeof t)
                            throw new TypeError('"listener" argument must be a function');
                        return this.on(e, function (e, t, n) {
                            var r = {
                                fired: !1,
                                wrapFn: void 0,
                                target: e,
                                type: t,
                                listener: n
                            }
                                , i = v.call(P, r);
                            return i.listener = n,
                                r.wrapFn = i,
                                i
                        }(this, e, t)),
                            this
                    }

                    off(e, t) {
                        return x.call(this, e, t)
                    }

                    removeAllListeners(e) {
                        var t, n, r;
                        if (!(n = this._events))
                            return this;
                        if (!n.off)
                            return 0 === arguments.length ? (this._events = p(null),
                                this._eventsCount = 0) : n[e] && (0 == --this._eventsCount ? this._events = p(null) : delete n[e]),
                                this;
                        if (0 === arguments.length) {
                            var i, a = y(n);
                            for (r = 0; r < a.length; ++r)
                                "off" !== (i = a[r]) && this.removeAllListeners(i);
                            return this.removeAllListeners("off"),
                                this._events = p(null),
                                this._eventsCount = 0,
                                this
                        }
                        if ("function" == typeof (t = n[e]))
                            this.off(e, t);
                        else if (t)
                            for (r = t.length - 1; r >= 0; r--)
                                this.off(e, t[r]);
                        return this
                    }

                    listeners(e) {
                        return w(this, e, !0)
                    }

                    rawListeners(e) {
                        return w(this, e, !1)
                    }

                    listenerCount() {
                        return b.listenerCount.apply(this, arguments)
                    }
                }

                try {
                    var k = {};
                    Object.defineProperty && Object.defineProperty(k, "x", {
                        value: 0
                    }),
                        g = 0 === k.x
                } catch (e) {
                    g = !1
                }

                function x(e, t) {
                    var n, r, i, a, o;
                    if ("function" != typeof t)
                        throw new TypeError('"listener" argument must be a function');
                    if (!(r = this._events))
                        return this;
                    if (!(n = r[e]))
                        return this;
                    if (n === t || n.listener === t)
                        0 == --this._eventsCount ? this._events = p(null) : (delete r[e],
                        r.off && this.emit("off", e, n.listener || t));
                    else if ("function" != typeof n) {
                        for (i = -1,
                                 a = n.length - 1; a >= 0; a--)
                            if (n[a] === t || n[a].listener === t) {
                                o = n[a].listener,
                                    i = a;
                                break
                            }
                        if (i < 0)
                            return this;
                        0 === i ? n.shift() : function (e, t) {
                            for (var n = t, r = n + 1, i = e.length; r < i; n += 1,
                                r += 1)
                                e[n] = e[r];
                            e.pop()
                        }(n, i),
                        1 === n.length && (r[e] = n[0]),
                        r.off && this.emit("off", e, o || t)
                    }
                    return this
                }

                function P() {
                    if (!this.fired)
                        switch (this.target.off(this.type, this.wrapFn),
                            this.fired = !0,
                            arguments.length) {
                            case 0:
                                return this.listener.call(this.target);
                            case 1:
                                return this.listener.call(this.target, arguments[0]);
                            case 2:
                                return this.listener.call(this.target, arguments[0], arguments[1]);
                            case 3:
                                return this.listener.call(this.target, arguments[0], arguments[1], arguments[2]);
                            default:
                                for (var e = new Array(arguments.length), t = 0; t < e.length; ++t)
                                    e[t] = arguments[t];
                                this.listener.apply(this.target, e)
                        }
                }

                function w(e, t, n) {
                    var r = e._events;
                    if (!r)
                        return [];
                    var i = r[t];
                    return i ? "function" == typeof i ? n ? [i.listener || i] : [i] : n ? function (e) {
                        for (var t = new Array(e.length), n = 0; n < t.length; ++n)
                            t[n] = e[n].listener || e[n];
                        return t
                    }(i) : B(i, i.length) : []
                }

                function _(e) {
                    var t = this._events;
                    if (t) {
                        var n = t[e];
                        if ("function" == typeof n)
                            return 1;
                        if (n)
                            return n.length
                    }
                    return 0
                }

                function B(e, t) {
                    for (var n = new Array(t), r = 0; r < t; ++r)
                        n[r] = e[r];
                    return n
                }

                g ? Object.defineProperty(b, "defaultMaxListeners", {
                    enumerable: !0,
                    get: function () {
                        return m
                    },
                    set: function (e) {
                        if ("number" != typeof e || e < 0 || e != e)
                            throw new TypeError('"defaultMaxListeners" must be a positive number');
                        m = e
                    }
                }) : b.defaultMaxListeners = m;

                class T extends b {
                }

                var E = Object.prototype.toString;

                function S(e) {
                    return !!e && "object" == typeof e
                }

                function C(e) {
                    return "number" == typeof e && !isNaN(e)
                }

                function R(e) {
                    return S(e) && "[object arraybuffer]" === E.call(e).toLowerCase()
                }

                class L {
                    constructor() {
                        this.list_ = []
                    }

                    get byteLength() {
                        if (!C(this.byteLength_)) {
                            let e = 0;
                            for (let t, n = 0; n < this.list_.length; n++)
                                t = this.list_[n],
                                    e += t.byteLength;
                            this.byteLength_ = e
                        }
                        return this.byteLength_
                    }

                    get bytes() {
                        const {bufferList: e} = this;
                        let t = null;
                        return e.length > 0 && (t = 0 === e.length ? e[0] : this.toNewBytes()),
                            t
                    }

                    get empty() {
                        return 0 === this.list_.length
                    }

                    get bufferList() {
                        return this.list_
                    }

                    clear() {
                        let e = this.list_.length;
                        e > 0 && this.list_.splice(0, e),
                            this.byteLength_ = null
                    }

                    toNewBytes() {
                        let e = null
                            , t = 0;
                        for (; null === e;)
                            try {
                                t++,
                                    e = new Uint8Array(this.byteLength)
                            } catch (e) {
                                if (t > 50)
                                    throw e
                            }
                        for (let t = 0, n = 0; t < this.list_.length; t++) {
                            let r = this.list_[t];
                            e.set(r, n),
                                n += r.byteLength
                        }
                        return e
                    }

                    append(e) {
                        e instanceof L ? this.list_ = this.list_.concat(e.bufferList) : this.list_.push(e),
                            this.byteLength_ = null
                    }

                    cut(e, t = !0) {
                        let n = null;
                        if (e > 0 && !this.empty) {
                            let r = this.list_
                                , i = 0
                                , a = 0;
                            for (; r.length > 0;) {
                                let o = r.shift();
                                if (0 !== a) {
                                    let a = e - i;
                                    if (o.byteLength >= a) {
                                        t && n.set(o.subarray(0, a), i),
                                            o = o.subarray(a),
                                        o.byteLength > 0 && r.unshift(o);
                                        break
                                    }
                                    t && n.set(o, i),
                                        i += o.byteLength;
                                    break
                                }
                                if (o.byteLength >= e) {
                                    t && (n = o.subarray(0, e)),
                                    o.byteLength > e && (o = o.subarray(e),
                                        r.unshift(o));
                                    break
                                }
                                if (t) {
                                    try {
                                        n = new Uint8Array(e)
                                    } catch (t) {
                                        throw `alloc_memory_error@ cache buffer: ${e} ${t.message}`
                                    }
                                    n.set(o, 0)
                                }
                                i += o.byteLength,
                                    a++
                            }
                            this.byteLength_ = null
                        }
                        return n
                    }
                }

                class A {
                    constructor() {
                        this.map_ = {}
                    }

                    push(e, t) {
                        Object.prototype.hasOwnProperty.call(this.map_, e) ? this.map_[e].push(t) : this.map_[e] = [t]
                    }

                    get(e) {
                        let t = this.map_[e];
                        return t ? t.slice() : null
                    }

                    getAll() {
                        let e = [];
                        for (let t in this.map_)
                            e.push.apply(e, this.map_[t]);
                        return e
                    }

                    remove(e, t) {
                        let n = this.map_[e];
                        if (n)
                            for (let e = 0; e < n.length; ++e)
                                n[e] == t && (n.splice(e, 1),
                                    --e)
                    }

                    clear() {
                        this.map_ = {}
                    }

                    forEach(e) {
                        for (let t in this.map_)
                            e(t, this.map_[t])
                    }
                }

                class D {
                    constructor(e, t, n) {
                        this.target = e,
                            this.type = t,
                            this.listener = n,
                            this.target.addEventListener ? this.target.addEventListener(t, n, !1) : this.target.on && this.target.on(t, n, !1)
                    }

                    off() {
                        this.target.removeEventListener ? this.target.removeEventListener(this.type, this.listener, !1) : this.target.off && this.target.off(this.type, this.listener, !1),
                            this.target = null,
                            this.listener = null
                    }
                }

                class O {
                    constructor() {
                        this.bindingMap_ = new A
                    }

                    destroy() {
                        this.removeAll(),
                            this.bindingMap_ = null
                    }

                    on(e, t, n) {
                        if (!this.bindingMap_)
                            return;
                        let r = new D(e, t, n);
                        return this.bindingMap_.push(t, r),
                            this
                    }

                    once(e, t, n) {
                        this.on(e, t, function (r) {
                            this.off(e, t),
                                n(r)
                        }
                            .bind(this))
                    }

                    off(e, t) {
                        if (!this.bindingMap_)
                            return;
                        let n = this.bindingMap_.get(t) || [];
                        for (let r = 0; r < n.length; ++r) {
                            let i = n[r];
                            i.target == e && (i.off(),
                                this.bindingMap_.remove(t, i))
                        }
                    }

                    removeAll() {
                        if (!this.bindingMap_)
                            return;
                        let e = this.bindingMap_.getAll();
                        for (let t = 0; t < e.length; ++t)
                            e[t].off();
                        this.bindingMap_.clear()
                    }
                }

                let M;
                M = "undefined" == typeof window ? self : window;
                let I = M.console;
                const N = "undefined" != typeof WorkerGlobalScope && self instanceof WorkerGlobalScope && "undefined" != typeof importScripts;
                let U = new class extends b {
                        constructor() {
                            super(),
                                this._enable = !1
                        }

                        get enable() {
                            return this._enable
                        }

                        set enable(e) {
                            this._enable = e,
                                this.MSG_NAME = "__log__"
                        }

                        log(...e) {
                            N ? U.emit(this.MSG_NAME, "log", [...e].join("")) : this._enable && I.log.call(I, ">>>", ...e)
                        }

                        debug(...e) {
                            N ? U.emit(this.MSG_NAME, "debug", [...e].join("")) : this._enable && I.debug && I.debug.call(I, ">>>", ...e)
                        }

                        assert(...e) {
                            if (this._enable && I.assert) {
                                let t = e[0]
                                    , n = Array.prototype.slice.call(e, 1);
                                n.unshift(">>>"),
                                    I.assert.call(I, t, ...n)
                            }
                        }

                        warn(...e) {
                            N ? U.emit(this.MSG_NAME, "warn", [...e].join("")) : this._enable && I.warn.call(I, ">>>", ...e)
                        }

                        error(...e) {
                            N ? U.emit(this.MSG_NAME, "error", [...e].join("")) : this._enable && I.error.call(I, ">>>", ...e)
                        }
                    }
                ;

                class F extends b {
                    constructor() {
                        super()
                    }

                    pipe(e) {
                        return this.on("reset", (function () {
                                e.reset()
                            }
                        )),
                            this.on("data", (function (t) {
                                    e.push(t)
                                }
                            )),
                            this.on("done", (function (t) {
                                    e.flush(t)
                                }
                            )),
                            e
                    }

                    unpipe() {
                        return this.removeAllListeners("reset"),
                            this.removeAllListeners("data"),
                            this.removeAllListeners("done"),
                            this
                    }

                    push(e, t) {
                        this.emit("data", e)
                    }

                    flush(e) {
                        this.emit("done", e)
                    }

                    reset() {
                        this.emit("reset")
                    }
                }

                class H extends F {
                    constructor(e = {}) {
                        super(),
                        e.debug && (U.enable = !0),
                            this.ctx_ = new T,
                            this.options_ = e,
                            this.cache_buffer_ = new L
                    }

                    listenEndStream_() {
                        this.eventManager_ = new O,
                            this.eventManager_.on(this.endStream, "data", e => {
                                    this.emit(r.DEMUX_DATA, e)
                                }
                            ).on(this.endStream, "done", e => {
                                    this.emit(r.DONE, e)
                                }
                            ).on(this.ctx_, "error", e => {
                                    this.emit(r.ERROR, e)
                                }
                            )
                    }

                    constraintPushData_(e) {
                        let t = null;
                        return R(e) || S(n = e) && "[object uint8array]" === E.call(n).toLowerCase() ? (t = R(e) ? new Uint8Array(e) : e,
                            t) : (U.error("Data pushed is not an ArrayBuffer or Uint8Array: " + e),
                            t);
                        var n
                    }

                    reset() {
                    }

                    destroy() {
                        this.unpipe(),
                            this.endStream.unpipe(),
                            this.eventManager_.removeAll()
                    }
                }

                var j;
                !function (e) {
                    e[e.WORKER_EXCEPTION = 0] = "WORKER_EXCEPTION",
                        e[e.WORKER_MSG_EXCEPTION = 1] = "WORKER_MSG_EXCEPTION",
                        e[e.TS_SYNC_BYTE = 2] = "TS_SYNC_BYTE",
                        e[e.FLV_HEAD_SIGNATURE = 3] = "FLV_HEAD_SIGNATURE",
                        e[e.FLV_NOT_EXPECTED_ADJACENT_DATA = 4] = "FLV_NOT_EXPECTED_ADJACENT_DATA"
                }(j || (j = {}));
                var z = j;

                function W(e) {
                    let t = 0;
                    return ArrayBuffer.isView(e) && (t = e.byteOffset,
                        e = e.buffer),
                        new DataView(e, t)
                }

                class V {
                    constructor() {
                    }

                    readUint8(e, t) {
                        return W(e).getUint8(t)
                    }

                    readUint16(e, t, n = !1) {
                        return W(e).getUint16(t, n)
                    }

                    readUint32(e, t, n = !1) {
                        return W(e).getUint32(t, n)
                    }
                }

                class X extends V {
                    constructor(e) {
                        super(),
                            this.table_id = e[0],
                            this.section_syntax_indicator = e[1] >> 7,
                            this.section_length = (15 & e[1]) << 8 | e[2],
                            this.transport_stream_id = this.readUint16(e, 3),
                            this.version_number = e[5] >> 1 & 31,
                            this.current_next_indicator = e[5] && 1,
                            this.section_number = e[6],
                            this.last_section_number = e[7],
                            this.network_PID = 0;
                        var t, n = 0, r = this.section_length - 4 - 5;
                        for (this.pmtTable = []; n < r; n += 4)
                            0 == (t = this.readUint16(e, 8 + n)) ? (this.network_PID = (31 & e[10 + n]) << 8 | e[11 + n],
                                U.log("packet->network_PID %0x /n/n", this.network_PID)) : this.pmtTable.push({
                                programNum: t,
                                program_map_PID: (31 & e[10 + n]) << 8 | e[11 + n]
                            });
                        var i = this.section_length + 3;
                        this.CRC_32 = (255 & e[i - 4]) << 24 | (255 & e[i - 3]) << 16 | (255 & e[i - 2]) << 8 | 255 & e[i - 1]
                    }
                }

                class Y extends V {
                    constructor(e) {
                        if (super(),
                            this.table_id = e[0],
                            this.section_syntax_indicator = e[1] >> 7,
                            this.section_length = (15 & e[1]) << 8 | e[2],
                            this.program_number = this.readUint16(e, 3),
                            this.version_number = e[5] >> 1 & 31,
                            this.current_next_indicator = e[5] && 1,
                            this.section_number = e[6],
                            this.last_section_number = e[7],
                            this.PCR_PID = (31 & e[8]) << 8 | e[9],
                            this.program_info_length = (15 & e[10]) << 8 | e[11],
                        this.program_info_length < 0)
                            return;
                        if (this.program_info_length > 2) {
                            let t = 0;
                            for (; t < this.program_info_length;) {
                                t += e[13 + t]
                            }
                        }
                        var t = 12 + this.program_info_length
                            , n = this.section_length - this.program_info_length - 9 - 4
                            , r = t + n;
                        if (t >= r)
                            return void U.warn(`es_section_pos < es_section_end ${t}, ${r}`);
                        this.pes_table = [];
                        let i = 0;
                        for (; i < n;) {
                            let n = e[t + i]
                                , r = 8191 & this.readUint16(e, t + i + 1)
                                , a = 4095 & this.readUint16(e, t + i + 3);
                            if (this.pes_table.push({
                                streamType: n,
                                PID: r
                            }),
                            a > 2) {
                                let n = 0
                                    , r = t + i + 5;
                                for (; n < a;) {
                                    n += e[r + n]
                                }
                            }
                            i += a + 5
                        }
                        var a = this.section_length + 3;
                        this.CRC_32 = (255 & e[a - 4]) << 24 | (255 & e[a - 3]) << 16 | (255 & e[a - 2]) << 8 | 255 & e[a - 1]
                    }

                    parse() {
                    }
                }

                class G extends V {
                    constructor(e) {
                        super(),
                            this.table_id = e[0],
                            this.section_syntax_indicator = e[1] >> 7,
                            this.section_length = (15 & e[1]) << 8 | e[2],
                            this.transport_stream_id = this.readUint16(e, 3),
                            this.version_number = e[5] >> 1 & 31,
                            this.current_next_indicator = 1 & e[5],
                            this.section_number = e[6],
                            this.last_section_number = e[7],
                            this.original_network_id = this.readUint16(e, 8);
                        let t = this.section_length - 8 - 4;
                        this.service_table = [];
                        let n = 0;
                        for (; n < t;) {
                            let t = 0
                                , r = {
                                service_id: this.readUint16(e, 11),
                                EIT_schedule_flag: 2 & e[13],
                                EIT_present_following_flag: 1 & e[13],
                                running_status: e[14] >> 5,
                                free_CA_mode: e[14] >> 4 & 1,
                                descriptors_loop_length: (15 & e[14]) << 8 | e[15],
                                provider_name: "",
                                name: ""
                            };
                            for (; t < r.descriptors_loop_length;) {
                                let n = 16 + t
                                    , i = e[n]
                                    , a = e[n + 1];
                                switch (i) {
                                    case 72: {
                                        let t = []
                                            , i = e[n + 3]
                                            , a = 0
                                            , o = 0
                                            , s = n + 4;
                                        for (a = 0; a < i; a++)
                                            t.push(String.fromCharCode(e[s])),
                                                s += 1;
                                        r.provider_name = t.join("");
                                        let u = []
                                            , l = e[s];
                                        for (s += 1,
                                                 o = 0; o < l; o++)
                                            u.push(String.fromCharCode(e[s])),
                                                s += 1;
                                        r.name = u.join("")
                                    }
                                        break;
                                    default:
                                        U.warn("sdt section unhandled descriptor_tag " + i)
                                }
                                t += 2 + a
                            }
                            this.service_table.push(r),
                                n += 5 + r.descriptors_loop_length
                        }
                    }
                }

                class $ {
                }

                class K {
                    constructor(e) {
                        this.context = e,
                            this.metadata = new $,
                            this.pat_table = [],
                            this.pes_streams = []
                    }

                    get currentProgramPID() {
                        let e = [];
                        for (let t = 0; t < this.pat_table.length; t++)
                            e.push(this.pat_table[t].pid);
                        return e.length > 0 ? e[0] : -1
                    }

                    reset() {
                        this.metadata = new $,
                            this.pat_table.splice(0, this.pat_table.length),
                            this.pes_streams.splice(0, this.pes_streams.length)
                    }

                    parse(e) {
                        0 === e.PID ? this._parsePat(e) : 1 === e.PID || 2 === e.PID || 3 <= e.PID && e.PID <= 15 || (17 === e.PID ? this._parseSdt(e) : e.PID === this.currentProgramPID && this._parsePmt(e))
                    }

                    findTrack(e) {
                        let t = null
                            , n = this.pes_streams;
                        for (let r = 0; r < n.length; r++)
                            if (n[r].id === e) {
                                t = n[r];
                                break
                            }
                        return t
                    }

                    _parsePat(e) {
                        let t;
                        if (e.payload_unit_start_indicator) {
                            let n = e.payload[0];
                            t = e.payload.subarray(n + 1)
                        } else
                            t = e.payload;
                        let n = new X(t);
                        for (var r = 0; r < n.pmtTable.length; r++)
                            this._add_pid_to_pmt(n.pmtTable[r].programNum, n.pmtTable[r].program_map_PID);
                        return n
                    }

                    _add_pid_to_pmt(e, t) {
                        let n = this.pat_table;
                        (function (e) {
                                for (let t, r = 0; r < n.length; r++)
                                    if (t = n[r],
                                    t.id === e)
                                        return {
                                            idx: r,
                                            item: t
                                        };
                                return null
                            }
                        )(e) || n.push({
                            id: e,
                            pid: t
                        })
                    }

                    _parsePmt(e) {
                        let t;
                        if (e.payload_unit_start_indicator) {
                            let n = e.payload[0];
                            t = e.payload.subarray(n + 1)
                        } else
                            t = e.payload;
                        let n = new Y(t);
                        for (var r = 0; r < n.pes_table.length; r++)
                            this._add_pes_stream(n.pes_table[r], n);
                        return n
                    }

                    _add_pes_stream(e, t) {
                        let n = this.pes_streams;
                        (function (e) {
                                for (let t, r = 0; r < n.length; r++)
                                    if (t = n[r],
                                    t.id === e)
                                        return {
                                            idx: r,
                                            item: t
                                        };
                                return null
                            }
                        )(e.PID) || n.push({
                            id: e.PID,
                            stream_type: e.streamType,
                            pcr_pid: t.PCR_PID,
                            duration: 0,
                            sps: [],
                            pps: [],
                            pixelRatio: [1, 1],
                            timescale: 9e4,
                            width: 0,
                            height: 0
                        })
                    }

                    _parseSdt(e) {
                        let t;
                        if (e.payload_unit_start_indicator) {
                            let n = e.payload[0];
                            t = e.payload.subarray(n + 1)
                        } else
                            t = e.payload;
                        let n = new G(t);
                        return n.service_table.length > 0 && (this.metadata.service_name = n.service_table[0].name,
                            this.metadata.service_provider = n.service_table[0].provider_name),
                            n
                    }
                }

                class q extends F {
                    constructor(e, t) {
                        super(),
                            this.context = e,
                            this.PSI = t,
                            this.videoTrack = null,
                            this.audioTrack = null,
                            this.captionTrack = null
                    }

                    push(e) {
                        let t = e;
                        for (let e, n = 0; n < t.length; n++)
                            switch (e = t[n],
                                e.type) {
                                case "video":
                                    this._complexVideo(e);
                                    break;
                                case "audio":
                                    this._complexAudio(e);
                                    break;
                                case "caption":
                                    this._complexCaption(e)
                            }
                    }

                    flush() {
                        this.emit("done"),
                            this._clearStream()
                    }

                    reset() {
                        this._clearStream()
                    }

                    _clearStream() {
                        this.videoTrack = null,
                            this.audioTrack = null,
                            this.captionTrack = null
                    }

                    _complexVideo(e) {
                        let t = this.PSI.findTrack(e.trackId);
                        t && (t.type = "video",
                            t.gops = e,
                            t.firstDTS = e[0][0].dts,
                            t.firstPTS = e[0][0].pts,
                            t.duration = Number.POSITIVE_INFINITY,
                            this.videoTrack = t,
                            this.emit("data", {
                                videoTrack: this.videoTrack
                            }))
                    }

                    _complexAudio(e) {
                        let t = this.PSI.findTrack(e.trackId);
                        t && (t.type = "audio",
                            t.frames = e,
                            t.firstPTS = t.firstDTS = e[0].dts,
                            t.duration = Number.POSITIVE_INFINITY,
                            this.audioTrack = t,
                            this.emit("data", {
                                audioTrack: this.audioTrack
                            }))
                    }

                    _complexCaption() {
                    }
                }

                const Q = {
                    mac: !1,
                    iphone: !1,
                    android: !1
                }
                    , Z = {
                    version: !1,
                    CHROME: !1,
                    SAFARI: !1,
                    FIREFOX: !1,
                    IE11: !1,
                    IE: !1,
                    EDGE: !1,
                    WECHAT: !1
                };
                let J = navigator.userAgent.toLowerCase();
                var ee = /(edge)\/([\w.]+)/.exec(J) || /(opr)[/]([\w.]+)/.exec(J) || /(chrome)[ /]([\w.]+)/.exec(J) || /(firefox)[ /]([\w.]+)/.exec(J) || /(iemobile)[/]([\w.]+)/.exec(J) || /(version)(applewebkit)[ /]([\w.]+).*(safari)[ /]([\w.]+)/.exec(J) || /(webkit)[ /]([\w.]+).*(version)[ /]([\w.]+).*(safari)[ /]([\w.]+)/.exec(J) || /(webkit)[ /]([\w.]+)/.exec(J) || /(opera)(?:.*version|)[ /]([\w.]+)/.exec(J) || /(msie) ([\w.]+)/.exec(J) || J.indexOf("trident") >= 0 && /(rv)(?::| )([\w.]+)/.exec(J) || J.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(J) || []
                    ,
                    te = /(ipad)/.exec(J) || /(ipod)/.exec(J) || /(windows phone)/.exec(J) || /(iphone)/.exec(J) || /(kindle)/.exec(J) || /(silk)/.exec(J) || /(android)/.exec(J) || /(win)/.exec(J) || /(mac)/.exec(J) || /(linux)/.exec(J) || /(cros)/.exec(J) || /(playbook)/.exec(J) || /(bb)/.exec(J) || /(blackberry)/.exec(J) || []
                    , ne = {
                        version: void 0
                    }
                    , re = {
                        browser: ee[5] || ee[3] || ee[1] || "",
                        version: ee[2] || ee[4] || "0",
                        versionNumber: ee[4] || ee[2] || "0",
                        platform: te[0] || ""
                    };
                if (re.browser) {
                    ne[re.browser] = !0;
                    let e = re.versionNumber.split(".");
                    ne.version = {
                        major: parseInt(re.versionNumber, 10),
                        string: re.version
                    },
                    e.length > 1 && (ne.version.minor = parseInt(e[1], 10)),
                    e.length > 2 && (ne.version.build = parseInt(e[2], 10))
                }
                Z.version = ne.version,
                    Z.CHROME = !!ne.chrome,
                    Z.SAFARI = !!ne.safari && !Z.CHROME,
                    Z.FIREFOX = !!ne.firefox,
                    Z.IE11 = /rv:11/.test(J),
                    Z.IE = !!ne.msie || Z.IE11,
                    Z.EDGE = !!ne.edge,
                    Z.WECHAT = /(wechat)|(micromessenger)/.test(J),
                    Q.mac = !!re.platform.mac,
                    Q.iphone = !!re.platform.iphone,
                    Q.android = !!re.platform.android;
                var ie = Z
                    , ae = Q;
                const oe = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350];
                const se = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350];

                class ue extends b {
                    constructor() {
                        super()
                    }

                    push(e) {
                        let t, n, r, i, a, {pts: o, dts: s, payload: u} = e, l = u, c = 0, h = 0;
                        for (; c + 5 < l.length;) {
                            if (255 !== l[c] || 240 != (246 & l[c + 1])) {
                                c++;
                                continue
                            }
                            if (n = 2 * (1 & ~l[c + 1]),
                                t = (3 & l[c + 3]) << 11 | l[c + 4] << 3 | (224 & l[c + 5]) >> 5,
                                i = 1024 * (1 + (3 & l[c + 6])),
                                a = 9e4 * i / se[(60 & l[c + 2]) >>> 2],
                                r = c + t,
                            l.byteLength < r)
                                return;
                            let e = {
                                pts: o + h * a,
                                dts: s + h * a,
                                sampleCount: i,
                                audioObjectType: 1 + (l[c + 2] >>> 6 & 3),
                                channelCount: (1 & l[c + 2]) << 2 | (192 & l[c + 3]) >>> 6,
                                sampleRate: se[(60 & l[c + 2]) >>> 2],
                                samplingFrequencyIndex: (60 & l[c + 2]) >>> 2,
                                sampleSize: 16,
                                data: l.subarray(c + 7 + n, r)
                            };
                            if (this.emit("frame", e),
                            l.byteLength === r)
                                return l = void 0,
                                    void this.emit("done");
                            h++,
                                l = l.subarray(r)
                        }
                    }
                }

                class le extends F {
                    constructor(e) {
                        super(),
                            this.PSI = e,
                            this.trackId = null,
                            this.codec = new ue,
                            this.codec.on("frame", e => {
                                    this.frames.push(e),
                                        this.frames.byteLength += e.data.byteLength,
                                        this.frames.trackId = this.trackId
                                }
                            ),
                            this._newFrames()
                    }

                    push(e) {
                        15 === e.stream_type && (this.trackId = e.pid,
                            this.codec.push({
                                dts: e.pes.DTS,
                                pts: e.pes.PTS,
                                payload: e.pes.data_byte
                            }))
                    }

                    flush() {
                        if (this.frames.length > 0) {
                            let e = this.frames.length
                                , t = this.frames[0]
                                , n = this.frames[e - 1]
                                , r = n.sampleRate * n.sampleCount / 9e4;
                            this.frames.firstDTS = t.dts,
                                this.frames.firstPTS = t.pts,
                                this.frames.duration = 1 === e ? r : r + (n.pts - t.pts),
                                this._updateTrackMeta(t),
                                this.emit("data", this.frames),
                                this.reset(),
                                this.emit("done")
                        }
                    }

                    reset() {
                        this.trackId = null,
                            this._newFrames()
                    }

                    _newFrames() {
                        this.frames = [],
                            this.frames.type = "audio",
                            this.frames.byteLength = 0,
                            this.frames.duration = 0,
                            this.frames.firstDTS = 0,
                            this.frames.firstPTS = 0
                    }

                    _updateTrackMeta(e) {
                        let t = this.PSI.findTrack(this.trackId)
                            , n = ((e, t, n) => {
                                let r, i, a = e;
                                if (!(t > oe.length - 1))
                                    return ie.FIREFOX ? t >= 6 ? (e = 5,
                                        i = new Array(4),
                                        r = t - 3) : (e = 2,
                                        i = new Array(2),
                                        r = t) : ae.android ? (e = 2,
                                        i = new Array(2),
                                        r = t) : (e = 5,
                                        i = new Array(4),
                                        t >= 6 ? r = t - 3 : (1 === n && (e = 2,
                                            i = new Array(2)),
                                            r = t)),
                                        i[0] = e << 3,
                                        i[0] |= (14 & t) >> 1,
                                        i[1] |= (1 & t) << 7,
                                        i[1] |= n << 3,
                                    5 === e && (i[1] |= (14 & r) >> 1,
                                        i[2] = (1 & r) << 7,
                                        i[2] |= 8,
                                        i[3] = 0),
                                        {
                                            config: i,
                                            sampleRate: oe[t],
                                            channelCount: n,
                                            codec: "mp4a.40." + e,
                                            realCodec: "mp4a.40." + a
                                        };
                                U.error("invalid sampling index:" + t)
                            }
                        )(e.audioObjectType, e.samplingFrequencyIndex, e.channelCount);
                        t.config = n.config,
                            t.sampleRate = n.sampleRate,
                            t.inputTimeScale = t.inputTimeScale || t.timescale,
                            t.timescale = n.sampleRate,
                            t.channelCount = n.channelCount,
                            t.codec = n.codec,
                            t.realCodec = n.realCodec,
                            t.isAAC = !0
                    }
                }

                function ce(e, t = 0, n = 1) {
                    let r = 0
                        , i = 0
                        , a = 0
                        , o = ""
                        , s = 0;
                    for (let a = t; a < t + n; a++)
                        r = Math.floor(a / 8),
                            i = 7 - a % 8,
                            s = e[r] >> i & 1,
                            o += s;
                    return a = parseInt(o, 2),
                        a
                }

                function he(e, t = 0) {
                    let n = []
                        , r = 8 * e.byteLength
                        , i = !1
                        , a = 0
                        , o = 0
                        , s = 0
                        , u = "";
                    for (let u = t; u < r; u++)
                        if (a = Math.floor(u / 8),
                            o = 7 - u % 8,
                            s = e[a] >> o & 1,
                            !i) {
                            if (0 !== s) {
                                i = !0,
                                    t = u;
                                break
                            }
                            n.push(0)
                        }
                    let l = n.length + 1;
                    for (let n = t; n < t + l; n++)
                        a = Math.floor(n / 8),
                            o = 7 - n % 8,
                            s = e[a] >> o & 1,
                            u += s;
                    return {
                        bitLength: n.length + l,
                        value: parseInt(u, 2) - 1
                    }
                }

                var fe = {
                    readUEV: he,
                    readSEV: function (e, t = 0) {
                        let n = he(e, t)
                            , r = n.value
                            , i = Math.pow(-1, r + 1) * Math.ceil(r / 2);
                        return {
                            bitLength: n.bitLength,
                            value: i
                        }
                    },
                    readBit: ce,
                    readByte: function (e, t = 0) {
                        return ce(e, t, 8)
                    }
                };
                let de = 0;

                function pe(e, t) {
                    let n, r = 8, i = 8;
                    for (var a = 0; a < t; a++)
                        0 != i && (n = fe.readUEV(e, de),
                            de += n.bitLength,
                            i = (r + n.value + 256) % 256),
                            r = e[a]
                }

                class ye extends V {
                    constructor(e) {
                        switch (super(),
                            this.forbidden_zero_bit = e[0] >> 7,
                            this.ref_idc = e[0] >> 5 & 3,
                            this.unit_type = 31 & e[0],
                            this.data = function (e) {
                                let t, n = e.byteLength, r = [], i = 1, a = new Uint8Array(0);
                                for (; i < n - 2;)
                                    0 === e[i] && 0 === e[i + 1] && 3 === e[i + 2] ? (r.push(i + 2),
                                        i += 2) : i++;
                                if (0 === r.length)
                                    return e;
                                t = n - r.length;
                                try {
                                    a = new Uint8Array(t)
                                } catch (e) {
                                    throw "epsb alloc mem error " + t
                                }
                                let o = 0;
                                for (i = 0; i < t; o++,
                                    i++)
                                    o === r[0] && (o++,
                                        r.shift()),
                                        a[i] = e[o];
                                return a
                            }(e.subarray(1)),
                            this.rawData = e,
                            this.unit_type) {
                            case 1:
                                break;
                            case 2:
                            case 3:
                            case 4:
                            case 5:
                                break;
                            case 7:
                                this.sps = function (e) {
                                    de = 0;
                                    let t, n, r, i, a, o, s, u = e[0], l = e[1], c = e[2], h = e.subarray(3), f = 0,
                                        d = [1, 1], p = 1, y = 0, v = !0, g = fe.readUEV(h, de);
                                    if (de += g.bitLength,
                                    100 == u || 110 == u || 122 == u || 244 == u || 44 == u || 83 == u || 86 == u || 118 == u || 128 == u) {
                                        let e = fe.readUEV(h, de);
                                        de += e.bitLength,
                                        3 == e.value && (de += 1);
                                        let t = fe.readUEV(h, de);
                                        de += t.bitLength;
                                        let n = fe.readUEV(h, de);
                                        if (de += n.bitLength,
                                            de += 1,
                                            f = fe.readBit(h, de),
                                            de += 1,
                                            f)
                                            for (let t = 0; t < (3 != e.value ? 8 : 12); t++) {
                                                let e = fe.readBit(h, de);
                                                de += 1,
                                                e && pe(h, t < 6 ? 16 : 64)
                                            }
                                    }
                                    let m = fe.readUEV(h, de);
                                    de += m.bitLength;
                                    let b = fe.readUEV(h, de)
                                        , k = b.value;
                                    if (de += b.bitLength,
                                    0 === k)
                                        t = fe.readUEV(h, de),
                                            de += t.bitLength;
                                    else if (1 === k) {
                                        de += 1,
                                            n = fe.readSEV(h, de),
                                            de += n.bitLength,
                                            r = fe.readSEV(h, de),
                                            de += r.bitLength,
                                            i = fe.readUEV(h, de),
                                            de += i.bitLength;
                                        for (let e, t = 0; t < i.value; t++)
                                            e = fe.readSEV(h, de),
                                                de += e.bitLength
                                    }
                                    let x = fe.readUEV(h, de);
                                    de += x.bitLength,
                                        de += 1;
                                    let P = fe.readUEV(h, de);
                                    de += P.bitLength;
                                    let w = fe.readUEV(h, de);
                                    de += w.bitLength;
                                    let _ = fe.readBit(h, de);
                                    de += 1,
                                    _ || (de += 1),
                                        de += 1;
                                    let B = fe.readBit(h, de);
                                    de += 1;
                                    let T = 0
                                        , E = 0
                                        , S = 0
                                        , C = 0;
                                    if (B) {
                                        let e = fe.readUEV(h, de);
                                        de += e.bitLength,
                                            T = e.value;
                                        let t = fe.readUEV(h, de);
                                        de += t.bitLength,
                                            E = t.value;
                                        let n = fe.readUEV(h, de);
                                        de += n.bitLength,
                                            S = n.value;
                                        let r = fe.readUEV(h, de);
                                        de += r.bitLength,
                                            C = r.value
                                    }
                                    let R = fe.readBit(h, de);
                                    if (de += 1,
                                        R) {
                                        let e = fe.readBit(h, de);
                                        if (de += 1,
                                            e) {
                                            const e = fe.readByte(h, de);
                                            switch (de += 8,
                                                e) {
                                                case 1:
                                                    d = [1, 1];
                                                    break;
                                                case 2:
                                                    d = [12, 11];
                                                    break;
                                                case 3:
                                                    d = [10, 11];
                                                    break;
                                                case 4:
                                                    d = [16, 11];
                                                    break;
                                                case 5:
                                                    d = [40, 33];
                                                    break;
                                                case 6:
                                                    d = [24, 11];
                                                    break;
                                                case 7:
                                                    d = [20, 11];
                                                    break;
                                                case 8:
                                                    d = [32, 11];
                                                    break;
                                                case 9:
                                                    d = [80, 33];
                                                    break;
                                                case 10:
                                                    d = [18, 11];
                                                    break;
                                                case 11:
                                                    d = [15, 11];
                                                    break;
                                                case 12:
                                                    d = [64, 33];
                                                    break;
                                                case 13:
                                                    d = [160, 99];
                                                    break;
                                                case 14:
                                                    d = [4, 3];
                                                    break;
                                                case 15:
                                                    d = [3, 2];
                                                    break;
                                                case 16:
                                                    d = [2, 1];
                                                    break;
                                                case 255: {
                                                    let e = fe.readByte(h, de);
                                                    de += 8;
                                                    let t = fe.readByte(h, de);
                                                    de += 8;
                                                    let n = fe.readByte(h, de);
                                                    de += 8;
                                                    let r = fe.readByte(h, de);
                                                    de += 8,
                                                        d = [e << 8 | t, n << 8 | r];
                                                    break
                                                }
                                            }
                                            d && (p = d[0] / d[1]),
                                            255 === e && (de += 16,
                                                de += 16)
                                        }
                                        let t = fe.readBit(h, de);
                                        de += 1,
                                        t && (de += 1);
                                        let n = fe.readBit(h, de);
                                        if (de += 1,
                                            n) {
                                            a = fe.readBit(h, de, 3),
                                                de += 3,
                                                de += 1;
                                            let e = fe.readBit(h, de);
                                            de += 1,
                                            e && (de += 24)
                                        }
                                        let r = fe.readBit(h, de);
                                        if (de += 1,
                                            r) {
                                            let e = fe.readUEV(h, de);
                                            de += e.bitLength;
                                            let t = fe.readUEV(h, de);
                                            de += t.bitLength
                                        }
                                        let i = fe.readBit(h, de);
                                        de += 1,
                                        i && (o = fe.readBit(h, de, 32),
                                            de += 32,
                                            s = fe.readBit(h, de, 32),
                                            de += 32,
                                            v = !!fe.readBit(h, de),
                                            de += 1,
                                            y = s / (2 * o))
                                    }
                                    return {
                                        payload: h,
                                        profile_idc: u,
                                        profile_compatibility: l,
                                        level_idc: c,
                                        sps_id: g.value,
                                        log2_max_frame_num_minus4: b.value,
                                        pic_order_cnt_type: k,
                                        log2_max_pic_order_cnt_lsb_minus4: t ? t.value : 0,
                                        width: Math.ceil((16 * (P.value + 1) - 2 * T - 2 * E) * p),
                                        height: (2 - _) * (w.value + 1) * 16 - 2 * S - 2 * C,
                                        pixelRatio: d,
                                        video_format: a,
                                        fps: y,
                                        fixedFPS: v
                                    }
                                }(this.data);
                                break;
                            case 8:
                                this.pps = function (e) {
                                    let t, n, r = 0, i = e, a = [], o = 0;
                                    r += fe.readUEV(i, r).bitLength,
                                        r += fe.readUEV(i, r).bitLength,
                                        r += 1,
                                        r += 1;
                                    let s = fe.readUEV(i, r);
                                    if (r += s.bitLength,
                                    s.value > 0) {
                                        let e = fe.readUEV(i, r);
                                        r += e.bitLength;
                                        let u, l = 0;
                                        switch (e.value) {
                                            case 0:
                                                for (l = 0; l <= e.value; l++)
                                                    u = fe.readUEV(i, r),
                                                        r += u.bitLength;
                                                break;
                                            case 2:
                                                for (l = 0; l <= e.value; l++)
                                                    u = fe.readUEV(i, r),
                                                        r += u.bitLength,
                                                        u = fe.readUEV(i, r),
                                                        r += u.bitLength;
                                                break;
                                            case 3:
                                            case 4:
                                            case 5:
                                                r += 1,
                                                    t = fe.readUEV(i, r),
                                                    r += t.bitLength;
                                                break;
                                            case 6: {
                                                n = fe.readUEV(i, r),
                                                    r += n.bitLength;
                                                let e = Math.ceil(Math.log2(s.value + 1));
                                                for (o = 0; o <= n.value; o++)
                                                    a.push(fe.readBit(i, r, e)),
                                                        r += e
                                            }
                                        }
                                    }
                                    return r += fe.readUEV(i, r).bitLength,
                                        r += fe.readUEV(i, r).bitLength,
                                        r += 1,
                                        r += 1,
                                        r += fe.readSEV(i, r).bitLength,
                                        r += fe.readSEV(i, r).bitLength,
                                        r += fe.readSEV(i, r).bitLength,
                                        r += 1,
                                        r += 1,
                                        r += 1,
                                        {
                                            sliceGroupNum: s.value + 1
                                        }
                                }(this.data);
                                break;
                            case 6:
                                this.sei = (this.data,
                                    {});
                                break;
                            case 9:
                                this.primary_pic_type = this.data[0] >> 5
                        }
                    }
                }

                class ve extends b {
                    constructor() {
                        super(),
                            this.cachedBytes = null
                    }

                    push(e) {
                        let t, n = this, r = 0, i = 0, a = 0, {pts: o, dts: s, payload: u, naluSizeLength: l} = e;
                        if (this.cachedBytes) {
                            try {
                                t = new Uint8Array(this.cachedBytes.byteLength + u.byteLength)
                            } catch (e) {
                                throw `h264 alloc mem error ${this.cachedBytes.byteLength}/${u.byteLength}`
                            }
                            t.set(this.cachedBytes),
                                t.set(u, this.cachedBytes.byteLength)
                        } else
                            t = u;
                        if (l) {
                            let e = 0
                                , r = 0
                                , i = 0;
                            do {
                                r = 0;
                                for (let n = 0; n < l; n++)
                                    r |= t[e + n] << 8 * (l - n - 1);
                                e += l,
                                    i = e + r,
                                i > t.length && (i = t.length);
                                let a = t.subarray(e, i)
                                    , u = new ye(a);
                                u.pts = o,
                                    u.dts = s,
                                    n.emit("nalu", u),
                                    e = i
                            } while (e < t.length)
                        } else {
                            let e = t.byteLength - 1
                                , u = 0;
                            do {
                                if (0 !== t[e])
                                    break;
                                u++,
                                    e--
                            } while (e > 0);
                            u >= 3 && (t = t.subarray(0, e + 1));
                            do {
                                let e = t[r] << 24 | t[r + 1] << 16 | t[r + 2] << 8 | t[r + 3]
                                    , l = t.length - r >= 4 ? e : -1
                                    , c = 0
                                    , h = r === t.length - 1;
                                if (l >> 8 == 1 ? c = 3 : 1 === l && (c = 4),
                                3 === c || 4 === c || h) {
                                    let e = i + a
                                        , l = h && u >= 3;
                                    if (r > i && (!h || l)) {
                                        let a = t.subarray(e, l ? r + 1 : r)
                                            , u = new ye(a);
                                        u.pts = o,
                                            u.dts = s,
                                            n.emit("nalu", u),
                                            i = r
                                    }
                                    h && (u < 3 ? (this.cachedBytes = t.subarray(i),
                                        this.cachedBytes.pts = o,
                                        this.cachedBytes.dts = s,
                                        this.cachedBytes.startCodeLength = a) : this.cachedBytes = null),
                                    r === i && (a = c),
                                        r += c || 1
                                } else
                                    r++
                            } while (r < t.length)
                        }
                        if (this.cachedBytes) {
                            let e = new ye(this.cachedBytes.subarray(this.cachedBytes.startCodeLength));
                            e.pts = this.cachedBytes.pts,
                                e.dts = this.cachedBytes.dts,
                                this.emit("nalu", e),
                                this.cachedBytes = null
                        }
                        this.emit("done")
                    }

                    reset() {
                        this.cachedBytes = null
                    }
                }

                class ge extends F {
                    constructor(e) {
                        super(),
                            this.PSI = e,
                            this.trackId = null,
                            this.currentFrame = [],
                            this.codec = new ve,
                            this._newGop(),
                            this._newGops(),
                            this.codec.on("nalu", e => {
                                    if (7 === e.unit_type) {
                                        let t = this.PSI.findTrack(this.trackId)
                                            , n = (e => {
                                                let t = "avc1."
                                                    , n = [e.profile_idc, e.profile_compatibility, e.level_idc];
                                                for (let e = 0; e < n.length; e++) {
                                                    let r = n[e].toString(16);
                                                    r.length < 2 && (r = "0" + r),
                                                        t += r
                                                }
                                                return {
                                                    codec: t
                                                }
                                            }
                                        )(e.sps);
                                        t.codec = n.codec,
                                            t.width = e.sps.width,
                                            t.height = e.sps.height,
                                            t.profileIdc = e.sps.profile_idc,
                                            t.profileCompatibility = e.sps.profile_compatibility,
                                            t.levelIdc = e.sps.level_idc,
                                            t.pixelRatio = e.sps.pixelRatio,
                                            t.sps = [e.rawData]
                                    } else if (8 === e.unit_type) {
                                        this.PSI.findTrack(this.trackId).pps = [e.rawData]
                                    }
                                    this._grouping(e)
                                }
                            )
                    }

                    push(e) {
                        const {stream_type: t, pes: n, pid: r} = e;
                        if (27 === t || 36 === t) {
                            this.trackId = r;
                            let e = {
                                pts: n.PTS,
                                dts: n.DTS,
                                payload: n.data_byte
                            };
                            this.codec.push(e)
                        }
                    }

                    flush() {
                        this.currentFrame.length > 0 && ((!this.currentFrame.duration || this.currentFrame.duration <= 0) && (this.currentFrame.duration = this.prevFrame.duration || 0),
                            this._pushFrameIntoGop(),
                            this.currentFrame = []),
                        this.gop.length > 0 && this._pushGopIntoGroup()
                    }

                    reset() {
                        this.codec.reset(),
                            this.currentFrame = [],
                            this._newGop(),
                            this._newGops()
                    }

                    _grouping(e) {
                        9 === e.unit_type ? (this.currentFrame.length > 0 && (this.currentFrame.duration = e.dts - this.currentFrame.dts,
                        this.gop.length > 0 && this.currentFrame.keyframe && (this.gop.trackId = this.trackId,
                            this._pushGopIntoGroup()),
                            this.currentFrame.keyframe || this.gop.length > 0 ? this._pushFrameIntoGop() : U.warn("h264 codec drop frame")),
                            this.prevFrame = this.currentFrame,
                            this.currentFrame = [],
                            this.currentFrame.keyframe = !1,
                            this.currentFrame.byteLength = 0,
                            this.currentFrame.naluCount = 0,
                            this.currentFrame.pts = e.pts,
                            this.currentFrame.dts = e.dts) : (5 === e.unit_type && (this.currentFrame.keyframe = !0),
                            this.currentFrame.byteLength += e.rawData.byteLength,
                            this.currentFrame.naluCount++,
                            this.currentFrame.push(e)),
                            this.currentFrame.duration = e.dts - this.currentFrame.dts
                    }

                    _newGop() {
                        this.gop = [],
                            this.gop.duration = 0,
                            this.gop.naluCount = 0,
                            this.gop.byteLength = 0
                    }

                    _pushFrameIntoGop() {
                        this.gop.push(this.currentFrame),
                            this.gop.duration += this.currentFrame.duration,
                            this.gop.byteLength += this.currentFrame.byteLength,
                            this.gop.naluCount += this.currentFrame.naluCount
                    }

                    _newGops() {
                        this.gops = [],
                            this.gops.type = "video",
                            this.gops.duration = 0,
                            this.gops.naluCount = 0,
                            this.gops.byteLength = 0,
                            this.gops.frameLength = 0,
                            this.gops.firstDTS = 0
                    }

                    _pushGopIntoGroup() {
                        let e = this.gop[0];
                        this.gops.trackId = this.trackId,
                            this.gops.duration += this.gop.duration,
                            this.gops.byteLength += this.gop.byteLength,
                            this.gops.naluCount += this.gop.naluCount,
                            this.gops.frameLength += this.gop.length,
                            this.gops.firstDTS = e.dts,
                            this.gops.firstPTS = e.pts,
                            this.gops.push(this.gop),
                            this.emit("data", this.gops),
                            this._newGop(),
                            this._newGops(),
                            this.emit("done")
                    }
                }

                class me extends F {
                    constructor(e, t, n = {}) {
                        super(),
                            this.context = e,
                            this.PSI = t,
                            this.options = n,
                            this.tracks = [],
                            this.adtsStream = new le(t),
                            this.avcStream = new ge(t),
                            this.streams = [this.adtsStream, this.avcStream],
                        n.decodeCodec && (this.avcStream.on("data", e => {
                                let t = n.config.stubTime;
                                if (C(t)) {
                                    let n = (e.firstPTS + e.duration) / 9e4;
                                    if (n < t)
                                        return void U.warn(`drop avc gop, start/end/stubTime(${e.firstPTS}/${n}/${t})`)
                                }
                                this.tracks.push(e),
                                    this.emit("data", this.tracks),
                                    this.tracks = [],
                                    this.adtsStream.flush()
                            }
                        ),
                            this.adtsStream.on("data", e => {
                                    let t = n.config.stubTime;
                                    if (C(t)) {
                                        let n = (e.firstPTS + e.duration) / 9e4;
                                        if (n < t)
                                            return void U.warn(`drop adts, start/end/stubTime(${e.firstPTS}/${n}/${t})`)
                                    }
                                    this.tracks.push(e),
                                        this.emit("data", this.tracks),
                                        this.tracks = []
                                }
                            ))
                    }

                    push(e) {
                        const {options: t, adtsStream: n, avcStream: r} = this;
                        let {stream_type: i} = e;
                        if (t.decodeCodec)
                            switch (i) {
                                case 27:
                                case 36:
                                    r.push(e);
                                    break;
                                case 15:
                                    n.push(e);
                                    break;
                                default:
                                    U.warn("ts elementary encounter unknown stream type " + i)
                            }
                        else
                            this.emit("data", e)
                    }

                    flush() {
                        let {streams: e, tracks: t} = this;
                        for (let t = 0; t < this.streams.length; t++) {
                            e[t].flush()
                        }
                        t.length > 0 && this.emit("data", t),
                            this.emit("done"),
                            t.splice(0, t.length)
                    }

                    reset() {
                        this.tracks = [];
                        for (let e = 0; e < this.streams.length; e++) {
                            this.streams[e].reset()
                        }
                        this.emit("reset")
                    }
                }

                class be extends V {
                    constructor(e) {
                        super(),
                            this.start_code_prefix = this.readUint16(e, 0) << 8 | e[2],
                            this.stream_id = e[3],
                            this.packet_length = this.readUint16(e, 4),
                            this.data_alignment_indicator = 4 & e[6],
                            this.copyright = 2 & e[6],
                            this.PTS_DTS_flags = e[7] >> 6,
                            this.ESCR_flag = 32 & e[7],
                            this.ES_rate_flag = 16 & e[7],
                            this.trick_mode_flag = 8 & e[7],
                            this.additional_copy_info_flag = 4 & e[7],
                            this.CRC_flag = 2 & e[7],
                            this.extension_flag = 1 & e[7],
                            this.header_data_length = e[8],
                            this.PTS = 0,
                        2 == (2 & this.PTS_DTS_flags) && (this.PTS = this.calcTimestamp_(e, 9)),
                            this.DTS = this.PTS,
                        1 == (1 & this.PTS_DTS_flags) && (this.DTS = this.calcTimestamp_(e, 14)),
                            this.data_byte = e.subarray(9 + this.header_data_length)
                    }

                    calcTimestamp_(e, t) {
                        return 536870912 * (14 & e[t]) + (e[t + 1] << 22) + (e[t + 2] >> 1 << 15) + (e[t + 3] << 7) + (e[t + 4] >> 1)
                    }

                    valid() {
                        let e = this.start_code_prefix;
                        return 0 === e[0] && 0 === e[1] && 1 === e[2]
                    }
                }

                class ke extends F {
                    constructor(e, t) {
                        super(),
                            this.context = e,
                            this.PSI = t,
                            this.PID = null,
                            this.cache_buffer = new L
                    }

                    push(e) {
                        const t = this;
                        e.PID > 31 && e.PID < 8191 && (-1 == this.PSI.currentProgramPID ? t._pushPacket(e) : this.PSI.currentProgramPID !== e.PID && (1 === e.payload_unit_start_indicator && t._assembleOnePES(),
                            t._pushPacket(e)))
                    }

                    flush() {
                        this._assembleOnePES(),
                            this.emit("done")
                    }

                    reset() {
                        this._clearCached(),
                            this.emit("reset")
                    }

                    _clearCached() {
                        this.PID = null,
                            this.cache_buffer.clear()
                    }

                    _pushPacket(e) {
                        let t = this.cache_buffer.empty;
                        t && 0 === e.payload_unit_start_indicator || (t && (this.PID = e.PID),
                            this.cache_buffer.append(e.payload))
                    }

                    _assembleOnePES() {
                        const e = this;
                        if (!this.cache_buffer.empty) {
                            let t;
                            try {
                                t = this.cache_buffer.toNewBytes()
                            } catch (e) {
                                throw "pes alloc mem err " + this.cache_buffer.byteLength
                            }
                            let n = new be(t)
                                , r = this.PSI.findTrack(this.PID);
                            if (r) {
                                let t = {
                                    pid: r.id,
                                    stream_type: r.stream_type,
                                    pcr_pid: r.pcr_pid,
                                    pes: n
                                };
                                e.emit("data", t)
                            }
                            e._clearCached()
                        }
                    }
                }

                class xe extends V {
                    constructor(e) {
                        if (super(),
                            this.sync_byte = e[0],
                            this.transport_error_indicator = e[1] >> 7,
                            this.payload_unit_start_indicator = e[1] >> 6 & 1,
                            this.transport_priority = e[1] >>> 5 & 1,
                            this.PID = 8191 & this.readUint16(e, 1),
                            this.tsc = e[3] >> 6,
                            this.afc = e[3] >> 4 & 3,
                            this.continuity_counter = 15 & e[3],
                            this.has_payload = 1 & this.afc,
                            this.has_adaptation = 2 & this.afc,
                            this.has_payload)
                            if (this.has_adaptation) {
                                let t = e[4];
                                this.payload = e.subarray(5 + t)
                            } else
                                this.payload = e.subarray(4)
                    }

                    valid() {
                        return 71 === this.sync_byte && 1 === this.has_payload
                    }
                }

                class Pe extends H {
                    constructor(e = {}) {
                        super(e),
                            this.psi_ = new K(this.ctx_),
                            this.pesStream_ = new ke(this.ctx_, this.psi_),
                            this.elementaryStream_ = new me(this.ctx_, this.psi_, e),
                            this.complexStream_ = new q(this.ctx_, this.psi_),
                            this.pipe(this.pesStream_),
                            this.pesStream_.pipe(this.elementaryStream_),
                            this.elementaryStream_.pipe(this.complexStream_),
                            super.listenEndStream_()
                    }

                    get endStream() {
                        let e = this.elementaryStream_;
                        return this.options_.decodeCodec && (e = this.complexStream_),
                            e
                    }

                    push(e, t) {
                        const {done: n} = t
                            , {options_: r, ctx_: i, cache_buffer_: a, psi_: o} = this;
                        let s = super.constraintPushData_(e)
                            , u = a.byteLength
                            , l = null;
                        for (r.config = t,
                                 U.log(`hls demux received ${s.byteLength} bytes, cache ${u} bytes. ${n ? "chunk done" : ""}`),
                                 a.append(s); a.byteLength >= 188;) {
                            let e = a.cut(188);
                            if (e) {
                                let t = new xe(e);
                                if (!t.valid()) {
                                    let n = `Encounter invalid ts packet, packet_length(${e.length}), cache_length(${this.cache_buffer_.byteLength}), has_payload(${t.has_payload}), data(${e})`;
                                    U.error(n),
                                        this.reset(),
                                        i.emit("error", z.TS_SYNC_BYTE, n, {
                                            startByte: l,
                                            endByte: l + e.byteLength
                                        });
                                    break
                                }
                                o.parse(t),
                                    this.emit("data", t),
                                    l += e.byteLength
                            }
                        }
                        a.empty && n && this.emit("done")
                    }

                    reset() {
                        this.cache_buffer_.clear(),
                            this.emit("reset")
                    }
                }

                var we, _e;
                !function (e) {
                    e[e.HEAD = 0] = "HEAD",
                        e[e.BODY = 1] = "BODY"
                }(we || (we = {})),
                    function (e) {
                        e[e.SCRIPT_DATA = 18] = "SCRIPT_DATA",
                            e[e.VIDEO = 9] = "VIDEO",
                            e[e.AUDIO = 8] = "AUDIO"
                    }(_e || (_e = {}));
                var Be, Te, Ee, Se;
                !function (e) {
                    e[e.AAC = 10] = "AAC"
                }(Be || (Be = {})),
                    function (e) {
                        e[e.MONO = 0] = "MONO",
                            e[e.STEREO = 1] = "STEREO"
                    }(Te || (Te = {}));
                !function (e) {
                    e[e.SEQUENCE_HEAD = 0] = "SEQUENCE_HEAD",
                        e[e.AAC_RAW = 1] = "AAC_RAW"
                }(Ee || (Ee = {}));
                !function (e) {
                    e[e.SEQUENCE_HEAD = 0] = "SEQUENCE_HEAD",
                        e[e.NALU = 1] = "NALU",
                        e[e.SEQUENCE_END = 2] = "SEQUENCE_END"
                }(Se || (Se = {}));
                const Ce = new ve
                    , Re = [];
                Ce.on("nalu", e => {
                        Re.push(e)
                    }
                );
                var Le;
                !function (e) {
                    e[e.AVC = 7] = "AVC"
                }(Le || (Le = {}));
                var Ae = function () {
                    function e(t, n) {
                        a()(this, e),
                            this.subtle = t,
                            this.key = n
                    }

                    return s()(e, [{
                        key: "expandKey",
                        value: function () {
                            return this.subtle.importKey("raw", this.key, {
                                name: "AES-CBC"
                            }, !1, ["encrypt", "decrypt"])
                        }
                    }]),
                        e
                }()
                    , De = function () {
                    function e(t, n) {
                        a()(this, e),
                            this.subtle = t,
                            this.aesIV = n
                    }

                    return s()(e, [{
                        key: "decrypt",
                        value: function (e, t) {
                            return this.subtle.decrypt({
                                name: "AES-CBC",
                                iv: this.aesIV
                            }, t, e)
                        }
                    }]),
                        e
                }();
                var Oe = function () {
                    function e(t) {
                        a()(this, e),
                            d()(this, "previousPes", null),
                            d()(this, "maxAudioPTS", 0),
                            d()(this, "maxVideoPTS", 0),
                            d()(this, "Module", null),
                            d()(this, "runtimeInitialized", !1),
                            d()(this, "currentTime", 0),
                            d()(this, "startTime", void 0),
                            t ? (this.init(),
                                this.key = void 0,
                                this.iv = void 0,
                                this.tk = void 0,
                                this.mh = void 0,
                                this.dataArray = [],
                                this.videoArray = [],
                                this.audioArray = [],
                                this.decode = t) : console.error("class TsDemux need pass decode parmas")
                    }

                    return s()(e, [{
                        key: "setKeyAndIV",
                        value: function (e) {
                            this.key = e.key,
                                this.iv = e.iv,
                                this.tk = e.tk,
                                this.mh = e.mh
                        }
                    }, {
                        key: "setStartTime",
                        value: function (e) {
                            this.startTime = e
                        }
                    }, {
                        key: "init",
                        value: function () {
                            var e = this;
                            try {
                                this.demuxer = new Pe({
                                    enableWorker: !1,
                                    debug: !1,
                                    onlyDemuxElementary: !0
                                }),
                                    this.demuxer.on(r.DEMUX_DATA, (function (t) {
                                            t instanceof Array ? (e.dataArray.push(t),
                                                e.demuxed(e.dataArray),
                                                e.dataArray = []) : e.dataArray.push(t)
                                        }
                                    )),
                                    this.demuxer.on(r.DONE, (function (t) {
                                            var n = {};
                                            e.demuxed(e.dataArray),
                                                e.dataArray = [],
                                                e.previousPes.partEnd = !0,
                                                e.previousPes.lastTS = e.isLast,
                                                e.isLast ? (e.maxPTS = Math.min(e.maxAudioPTS, e.maxVideoPTS),
                                                    n.audioEnd = !0,
                                                    e.audioQueue(n),
                                                    self.postMessage({
                                                        type: "demuxedAAC",
                                                        data: e.audioArray
                                                    }),
                                                    e.audioArray = [],
                                                    self.postMessage({
                                                        type: "maxPTS",
                                                        data: {
                                                            maxAudioPTS: e.maxAudioPTS,
                                                            maxVideoPTS: e.maxVideoPTS
                                                        }
                                                    })) : (self.postMessage({
                                                    type: "demuxedAAC",
                                                    data: e.audioArray
                                                }),
                                                    e.audioArray = []),
                                                e.demuxNext(e.startTime || e.currentTime, 30, void 0 !== e.startTime),
                                                e.startTime = void 0
                                        }
                                    ))
                            } catch (e) {
                                console.error("init demuxer failed.")
                            }
                        }
                    }, {
                        key: "demuxNext",
                        value: function (e) {
                            var t, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 10,
                                r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], i = n;
                            e && (i = -1 !== (t = this.videoArray.findIndex((function (t, n) {
                                    return t.PTS >= 100 * e
                                }
                            ))) ? t + i : this.videoArray.length),
                            this.videoArray.length - i < 10 && (i = this.videoArray.length);
                            var a = this.videoArray.splice(0, i);
                            a.length > 0 && (self.postMessage({
                                type: "demuxedFPSNumber",
                                data: {
                                    length: a.length,
                                    clear: r
                                }
                            }),
                                this.decode.push(a),
                                a = void 0,
                            0 === this.videoArray.length && (this.previousPes = null))
                        }
                    }, {
                        key: "decryptW",
                        value: function (e, t, n) {
                            var r = this;
                            self.Module && (this.Module = self.Module,
                                function () {
                                    var i = r.Module
                                        , a = r.mh
                                        , o = function (e) {
                                        var t, n, r, i;
                                        for ("abcdofghijklnmepqrstuvwxyz0123456789",
                                                 "lpmkenjibhuvgycftxdrzsoawq0126783459",
                                                 e = e.substr(1),
                                                 t = "",
                                                 n = 0; n < e.length; n++)
                                            r = e.charAt(n),
                                                t += -1 == (i = "lpmkenjibhuvgycftxdrzsoawq0126783459".indexOf(r)) ? r : "abcdofghijklnmepqrstuvwxyz0123456789".charAt(i);
                                        return t
                                    }(r.tk.split("-").pop())
                                        , s = new Uint8Array(function (e) {
                                        var t = []
                                            , n = 0;
                                        for (e = encodeURI(e); n < e.length;) {
                                            var r = e.charCodeAt(n++);
                                            37 === r ? (t.push(parseInt(e.substr(n, 2), 16)),
                                                n += 2) : t.push(r)
                                        }
                                        return t
                                    }(o))
                                        , u = i._malloc(s.length);
                                    i.HEAPU8.set(s, u);
                                    var l = s.byteLength
                                        , c = r.key
                                        , h = i._malloc(c.length);
                                    i.HEAPU8.set(c, h);
                                    var f = c.byteLength
                                        , d = e
                                        , p = d.byteLength
                                        , y = i._malloc(p);
                                    i.HEAPU8.set(d, y);
                                    var v = i._malloc(16);
                                    i.HEAPU8.set(r.iv, v),
                                        r.Module["" + o] = l;
                                    var g = i._get(y, v, p, h, f, a, u, l, n - 1)
                                        , m = r.Module.HEAPU8.subarray(g, g + p - p % 188);
                                    i._free(u),
                                        i._free(h),
                                        i._free(y),
                                        i._free(v),
                                        t(m)
                                }())
                        }
                    }, {
                        key: "decrypt",
                        value: function (e, t, n) {
                            var r = this;
                            if (this.tk && void 0 !== this.mh)
                                this.decryptW(e, t, n);
                            else {
                                var i;
                                try {
                                    var a = self.crypto;
                                    a && (i = a.subtle || a.webkitSubtle)
                                } catch (e) {
                                }
                                this.fastAesKey || (this.fastAesKey = new Ae(i, this.key)),
                                    this.fastAesKey.expandKey().then((function (n) {
                                            new De(i, r.iv).decrypt(e, n).catch((function (e) {
                                                    console.warn("decrypt ts data error")
                                                }
                                            )).then((function (e) {
                                                    t(e)
                                                }
                                            ))
                                        }
                                    ))
                            }
                        }
                    }, {
                        key: "push",
                        value: function (e, t, n) {
                            var r = this;
                            this.currentTime = n,
                                this.key ? this.decrypt(e, (function (e) {
                                        r.demuxer.push(e, {
                                            done: !0
                                        })
                                    }
                                ), t) : this.demuxer.push(e, {
                                    done: !0
                                })
                        }
                    }, {
                        key: "demuxed",
                        value: function (e) {
                            var t = this;
                            e.forEach((function (e) {
                                    t.tsDemuxed(e)
                                }
                            ))
                        }
                    }, {
                        key: "tsDemuxed",
                        value: function (e) {
                            var t = e.stream_type
                                , n = e.pes || {};
                            switch (t) {
                                case 27:
                                case 36:
                                    this.videoQueue(n);
                                    break;
                                case 3:
                                case 15:
                                case 17:
                                    n.PTS = Math.round(n.PTS * u.a * 1e3),
                                        this.maxAudioPTS = Math.max(n.PTS, this.maxAudioPTS),
                                        this.audioQueue(n)
                            }
                        }
                    }, {
                        key: "audioQueue",
                        value: function (e) {
                            this.audioArray.push(e)
                        }
                    }, {
                        key: "videoQueue",
                        value: function (e) {
                            this.previousPes = e,
                                this.maxVideoPTS = Math.max(this.maxVideoPTS, e.PTS),
                                this.videoArray.push(e)
                        }
                    }, {
                        key: "destroy",
                        value: function () {
                            this.demuxer.destroy()
                        }
                    }]),
                        e
                }();
                self.decode = new h,
                    self.demuxer = new Oe(self.decode);
                t.default = function (e) {
                    e.onmessage = function (t) {
                        var n = t.data
                            , r = n.type
                            , i = n.data
                            , a = n.isLast;
                        switch (r) {
                            case "loadPx":
                                e.decode.loadPx(n.data);
                                break;
                            case "keyAndIV":
                                e.demuxer.setKeyAndIV(n);
                                break;
                            case "startDemux":
                                e.demuxer.isLast = a,
                                    e.demuxer.push(i, n.no, n.currentTime);
                                break;
                            case "startTime":
                                e.demuxer.setStartTime(n.time);
                            case "nextDemux":
                                e.demuxer.demuxNext(void 0, n.poolLength);
                                break;
                            case "loadwasm":
                                e.decode.loadWASM(t);
                                break;
                            case "flush":
                                e.decode.flush()
                        }
                    }
                }
            }
            , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function (e, t, n) {
                e.exports = n(167)
            }
            , function (e, t, n) {
                e.exports = n(88).default
            }
        ])
    }
));

data = '{"version": "1","body": "uZS4J4w4uc6kFbqaParheaeMjH36auS9DACH5IF+XTCmzZFgwT+TzpVgCYkPh1g7BTFLH48o7ArXEnSOGKJtThtIbu5t8VorAAKCS8miEarOE56hf6Z8tX25vGsaovR8pwbOAxSl6WIms1uVyo5W1bpIxQR2UcvGhUoBVFBGpvcfXy4uyv4rbEvsl3PH5lxhFYs9QgknPhlrJVcvZ2XIakVvLaCxljmV+XrJyYQwrVWZrnr04PasVDG5LD1+5+f2sgPlJwDdRxZw7tBrPGfKWdNiAf9ONgj9EzjKQyUItLcqSTG18HxekVaMbVHRHCZOUgtIsEYzO12F+01n8tsdxcPhvJuCZV7Di0cSoYNtPrgLaTHhSuAIBrhi431YrR5C2fSvD0AOwRj7PNx/cXr6GHjS7sZNs3ULLfebsyX+MRquH1Rvww1lBmGHRZbjLgwP63DtLrnFhtwaIk4kQVLwMP6LGHjvxTFmyA8DJ3oS3c6a0Q656ObdhUbwY6eApGc9DSPFLBS513hgpHvL50WNCZOLNqy6HX8k2wIKMZYLV4uMk6Dl9R1gi03m0+0UXdIYQRWb6c0XRSSRrn6OOmIr2RoRbHjW6WCR1Q3X+RgnrDMFqItTnuG1oVxZO5XysFoXs0bcgnoVTwilCqJo4vuTY+3n6dIcrjRSvrQuAaigwVYdAJ/T/CP/0mcieGVOUwalQggK+9T7HiVll1e8TzDClc7gxV2FozoY9E/zWdVcRTR7MoJHljdHY44/9HCvndoQGSUT3tLRRqrd1X2GpRkEW+oNo8Fzm2So5tW7R4yqn9bDKANBb/XymBfExVybozSeEJ90/UDW1JPG6HmUvoGJNwywbz164pPEwAYQjNSmFyRxvAD0ztX5zTW11vDIlHEm8qRKCns98mgpdZUTutd5lftcXRarX6R2A77hmdEDAUet95JSVhliMn5FTXsOZZPtteWg4aWfVLB656pADz6c++oXDtXGk/HI4275BMxeD1kE95zzsmDi0Cnf7KHAlHRtw1xnhiCEgFRqoyN7jkQkbY0TD0nnhp/nlqH/r/nhB5rPAWYlli3a3oKyj9AwH+wQU6x1M/StX3+6VsqbJm3ZV+7kEHegZznTqz2g+dMtfM5Fy7uBTFCZIkXnEVzDeVCwl1QSlvUQg3crsDkOGNoJvPb4cpXwgKTuW47Qy4OQbGyuz/h0IBaJkEfGvdF4hWdPw1OqDpqUKeXG6LRT3sNli0eDLXdvVac6YzFPE0NiXmezyug3SZEwihOo6HfSYEoVQIxHAojhndCgkt33i3YDGHhn6+m00V/kfUtrGVszi57N5WSLC9wMJGDQkOsmlr+NqtIkg99yPSvxiXsX01cctTqt124IOyTJb8yWnrYCjN05FuRraaAupmeJeYEHThuULstBzkgsBhF8IsyuREz0s4pQ0AlCQggGSeHDeyx0Gdf0EqDZ6R4jboZHPWa+3SbnB5SfD+08mI9LT/jM5Af4iNpFGLSC4bZXwYjAPbCXvQhKHKHXcD8CYDwHCtQsUbafT/4dS6mvcSq5H/UpcKIJt1Uv4bcgk6LIdw4nH03bAurEB6BEMGvtsonH3hNT8N/8cm2feh9F7sbyvPzpAEGlLTUUwxuK4PpJcveSyEVS5auFah6pAr4DC2874dDfJTo6Pnox0IQySjJ8/W3MjrYVZJ+KNs3PkxY0uGeu9ODcwwHcPOMQHATXyF3vVAfISoOc4yGJNnw8lernhLQ6FFH8ZCDwW9p/OfID41qMnLiyuUXPALN+A6ggj1uHMfZ/AK9teEX5n4S1nrGfg2Q0UabOfzXjLjMz3br7tyQJZcqdthTUv1ncyBAwaaRR4b1DinRC26VDAl0W1rfv/WTe+yOTRfLKu8gbM+HrjybUhL2I4v+b89lLxDAcIbkSTx7/ilEcw47cb8jtnNKLP7mcryuNl00FPUwtuVCqyII3TdjizLSJgZkLd++sFdT8c1/6LbpMbmK52VTfUTOiY1FBelzOV+XDV9iB0CttJ+GFXCNb8sF+7c9KDlo9fp2bVZnp5PEGRDIIYvWtmZMvWKWTnh58SjSA3ZpwGOPKzsMlTwUjg3C8QkwAGa+CbVROGIBRCmbOSsdzYwKYDB0dXoH7Mo0LaSCbhvaDAnqC9Lm+Bva/7Dx3vnA7GAOk9cheAZkj8Bh4eV4hFXKHJKBYPPPFmRyEgXfXYNUElv2qnaXSAJBynZ9uwRgKtuZMF0wcSsJveP7z4pubSVYrX4R2csSqZ0UK3FoUqrzOLZgML++5FHlbpNvxVuGq/slmx5tx0FQuCe5zMWWnhWPg8OHpjxFiLqAzVWlk6Cj36RgT7H1wOLXq3uyuwM1x1VuCkahVy0BibYfg3MOOfTHFbQOA38/TvvWjQT3EqJFpf3m+xROwYvrpwrNUDpyT6skWZ8iQn9xmNuRSDmgrbu7KXhzgpiBtqqIiS0leFA17uIagedZLnagQFPlUZYUUqCPo7F8SoqnN2tG4DDWviP6YihkdIsH57szGW1icFp19wAnnuUdMaZQ8rKubRTPU1a74F0T3RaJrIBA3oSECffUh/AssrTD/kirMCYCvWHIRUZB90Sjkwidz16ejH0FrFz3YCR0VG2R60N4d1J+XP78QZHkFonXhTfS/bi9bPe1RjA3CcwREPlE7XJfXzytZ3zRjeeWJowGf/8xQM/Z6nqws1P2knzm3Uxy0OEkWabol5HqwCI372A2unHTRz5hMzj9oDRovTmmnnoRTO1Iccm+zV+CBQckEaJEkopMN/1TJ8vu/iZPIoVeoses/mDpDt8/vhIhLt/5YMxIPBKW2YJ2Qsit9SvFJEX9Os7mXxwrKkAGMbEandEZ3kX0ue9QXQcBQUqr0gOG0G4FxcK5u/AclhR3oAPL5mCQi7U0kM7htWuh9csW9wOqIsc/JwjnS3wH5sBLBqn44moCaiqc229/fY0RwoZP3gTJHMKxf6i2HrE+6914gs/ICGBYZAmWHSNIuZEU7//G7chLywSu7EFXKwXl/CVn4rGXLG9FRUr3eeU5UvCLOvJD3WBEOBXUrEgLjtLlTFoPuDLn77N0GIZ4azPeNNnd18Sr7IDGOSGDu/x00BbzckrNCw/rGG1sEu+fLeBPgi2SXvAz0u/jiazvF92LzDJSd6SAB9jrOZ9ttGHkGh4f63VjXpFHWE9uIOsNpMLJi4d7kZ3LRmBo+B6Eu7Smm9caHpFWa8at5HEDs95zGZLQKgpWlnjm8tgCyoIAkGgWShcUN9vKWp+gkwSdGngGL/jIVIQUkCkONQE6cK+oIHD2yhQl/TS+zaaowCfEygk3ho0D57a8JjNvxeyhMA62i5DLpU6eJ6hjsmDl2bIN3iOnN6ZOkLA4ODt3Z7PK5568WAJkQa9mVo1IivlxN7o5HegodQju2ITAM/nkyla1XMgKbemuzUMEi0AL0vrcc9fHJSlHqCaXahWZOakWcc+gQ7J4x0DeaPBoDhkvv0imlpgeQEV3AuC4Bd8mws39YehvAB6LGoJ30i1Wfhls8YTyN3LB5pj0G1me0gVpa3/bdvzWOoiMBTow8KANuLsuOXpDBZ3xWiWQ4KfBgyUVMmJZBBY/RjQqjGa+zUotfqKWmFTytUXTM0d/zIh20qzquT9fTEV6R2ZiSk0MaYbdsJBifCwZ1FE+kL18+++5zkcOjTLTkk8bBn0I3DtvjeR5CzSMOPhLkXf/ISOtOrzfMikLgAIcFkxGFyG72ml0qneVj/6M6vOynUCsx5U57NdX7IMUiai0DHZ6xhN6RBxdWIQ/Z+leBA/PSI73FJlggiMspTDJo3P07fBpyIa8yN7T2CtpVJDMwzVSpl2DF6ov21irnoPncxst2SCoAWXe77Rqp9Wvwg1zOE6nJQPhtI1Kv3nNApABmYHNsGfcpxLctPPCkEwkABmTDxylEJcDsnKC2wTJL4gY0SASlN145sgnL4IgoRFH1uFMxg2E7iZg5FEiWDdQTjIBDhLe/SkRPxKZ8WK/alBWGSkcUAW96Aw7n0Pn9c0yUFkwH86MYaLnFOYLM5iqhfM3HggKEcMNnrasm5VeRV4fktbVFhxUS47WgmmzCwH+VMh9laoRIzGFXJ9pnzA3fl+23QcvFTD39AjIprZENV5ARayI6pBV2IbtQUokUuJQf6KHfCJzbpKmNEQAgKXa1RQPsVAp7iVIVLtsNX/1GV/09r+w8RbF4GM6XjTjfp1tOa74mKII+KVmrJlkbi9zJbudJcgzGSZV6W+p7QOVaYODgU4rxEeXb4nj2JF/LvG49u14zYLyS1UlQ6nZ3nrl3PCUF0FsbO0MSEngbCxfYG+EqJgR2VnuP7wjSjBK3z6A1X9LTlGrEmexHgJncJkwt+eVI7TH3MzWQcwbGeAiwowkWVCvEQ36EuxBK5n/J9TW0EpDZ2ftHe67NmqJV3PHGwDXFvEdte1225lZh0/vi7C609i7mayOdJcLLmo3SgutfSpcMdC86AjCickewiMZN9EqbbxM2SuKFEJju3sHZlkofCqCB6uwfVOzRU91Zppxzx96+jOo7L1yTxhqd38QwcKDyCAJ5PC2C2/7jYSz5W8l+48furwyxzM8OBrhifRwvyFVAm0GyP8u2ptzU1/0/mB2iLg=="}'
i = 101.5

function decrypt_key(d, i) {
    rt = window.rt(d, i)
    console.log(rt)
    const key_urlRegex = /URI="([^"]+)"/
    const key_match = key_urlRegex.exec(rt);
    const obj = {}
    if (key_match) {
        obj.key = key_match[1]
    } else {
        console.log("No match found")
    }

    const value_urlRegex = /IV=(0x[0-9a-fA-F]+)/
    const value_match = value_urlRegex.exec(rt);
    if (value_match) {
        obj.value = value_match[1];
    } else {
        console.log("No match found")
    }
    return obj;
}

function decrypt_list(d,i){
    rt = window.rt(d, i)
    console.log(rt)
    const lists=rt.split("\n")
    url_lists=[]
    for (let i = 0; i < lists.length-1; i++) {
        const element = lists[i];
        if(element.startsWith("#"))
            continue
        url_lists.push(element)
    }
    return url_lists
}

console.log(decrypt_list(data, i))

